Pipenv: Pipenv لا يحل - نظام python بشكل صحيح.

تم إنشاؤها على ٣١ أكتوبر ٢٠١٧  ·  46تعليقات  ·  مصدر: pypa/pipenv

صف البيئة الخاصة بك
  1. نوع نظام التشغيل Docker Alpine Python -> https://github.com/docker-library/python/blob/1d59eb2dd813c64891bf554a8ea01754aba25816/3.6/alpine3.6/Dockerfile
  2. إصدار Python: Python 3.6.3
  3. إصدار Pipenv: pipenv, version 8.3.1
نتيجة متوقعة

إذا قمت بتعيين PIP_PYTHON_PATH ، فسيتم تجاهله وتجاوزه بواسطة pipenv (سؤالي هو لماذا ، ما هو السبب وراء ذلك؟) لأن https://github.com/kennethreitz/pipenv/blob/master/pipenv/utils.py#L367 هذا يتجاوز ENV متغير عند استخدام العلم --system . لقد اكتشفت هذه المشكلة لأنه عند إنشاء صورة عامل الإرساء الخاصة بي ، كانت تفشل على pipenv install --system

لماذا اعرف هذا؟ لأن هناك وظيفة أخرى تعمل بشكل غير صحيح.
`` (Pdb) python_path
"/ بن / بيثون"
(PDB) التي ("بيثون")
"/ بن / بيثون"
(PDB) طباعة (sys.executable)
"/ usr / local / bin / python"

/ # / بن / بيثون
sh: / bin / python: غير موجود

I think issue is somewhere here: https://github.com/kennethreitz/pipenv/blob/1bf6f5101a3bf1dca78be814e742411cc5bdb2dd/pipenv/cli.py#L1440
        p = os.sep.join([location] + ['bin/{0}'.format(command)])

"" this should return / usr / local / bin / python but for some strange reason it's returning / bin / python`

نتيجة فعلية

لم يفشل تثبيت pipenv install --system لأنه لم يتم العثور على / bin / python.

خطوات التكرار

pipenv install --system على صورة عامل الإرساء هذه ستفشل

التعليق الأكثر فائدة

لم يتم حل مشكلة kennethreitz ، لا يمكنك إغلاق الأشياء التي لم يتم إصلاحها بعد. المشكلة لا تزال قابلة للتكرار.

ال 46 كومينتر

galuszkak هذا مثير للاهتمام. لذلك تم تعيين sys.executable وفقًا لـ pdb ، لكننا لا نمرر حقيقة استخدامك —system عندما نطلق فعليًا which() ، لذا فهو يحاول استخدام موقع Virtualenv الخاص بالمشروع الذي يفترض أنه غير موجود. هذا هو الاستدعاء المناسب الذي يجب أن يكون سهلاً بما يكفي لإصلاحه عندما أصل إلى المكتب: https://github.com/kennethreitz/pipenv/blob/master/pipenv/utils.py#L406

بالنسبة لسبب قيامنا بكل هذا ، في الأساس ، يمكننا خداع محلل حزمة pip-fools لحل حزم python لإصدارات من python تختلف عن المترجم الفوري

باستخدام Dockerifle هذا ، الذي يستند إلى الشخص الذي تم الالتزام به في هذا الريبو ، لا يمكنني إعادة إنتاج هذه المشكلة ، دون أن أقول أنها غير موجودة ، يبدو أن هناك شيئًا ما قد انتهى ، شراء ملف dockerfile يبدو أنه يعمل:

FROM python:alpine3.6

# -- Install Pipenv:
RUN set -ex && pip install pipenv --upgrade

# -- Install Application into container:
RUN set -ex && mkdir /app

WORKDIR /app

# -- Adding Pipfiles
ONBUILD COPY Pipfile Pipfile
ONBUILD COPY Pipfile.lock Pipfile.lock

# -- Install dependencies:
ONBUILD RUN set -ex && pipenv install --deploy --system

erinxocon لم أستخدم - نشر العلم + أنت لا تستخدم $ PIP_PYTHON_PATH وهي مشكلة أصلية هنا تم تجاوزها بواسطة pipenv.

galuszkak اعتذارات ؛ أفهم ذلك ، وأعتقد أنني غير متأكد من سبب الحاجة إلى تعيين هذا في هذه الحالة. يجب علينا بالتأكيد معالجة هذا الخطأ وإصلاحه. أنا فقط أتساءل عما إذا كان هناك المزيد مما يجري مع عامل ميناء جبال الألب الذي يتطلب تعيين PIP_PYTHON_PATH.

erinxocon لا شيء للاعتذار :) ، شكرًا للنظر في مشكلتي 👍. الإصلاح الذي أقدمه في # 1005 يعمل معي الآن.

لكنني جربت صورتك وهي تعمل بشكل جيد تمامًا مع نفس مجموعة الأشياء. محاولة تحديد سبب مشكلتي في المقام الأول ، لأن sam Pipfile و Pipfile.lock ونفس أصوات ملف .env يعملان على Dockerfile الخاص بك ، ولا أرى فرقًا لأنني مصدر نفس الصورة ...

فهمت erinxocon ! إليك كيف يمكنك إعادة إنتاج ذلك:

FROM python:3.6-alpine3.6

RUN set -ex && pip install pipenv --upgrade
RUN set -ex && mkdir /app
ENV PIP_PYTHON_PATH=/usr/local/bin/python
COPY Pipfile /app/Pipfile

WORKDIR /app

ملف Pipfile:

[[source]]
url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"

[packages]
flask = "*"
"flask-restful" = "*"

[dev-packages]
pytest = "*"
"pytest-flask" = "*"

[requires]
python_version = "3.6"
$ docker build . -t 'pipenv_issue:latest' --no-cache
$ docker run -it pipenv_issue:latest sh
/app # pipenv install --system
CRITICAL:pip.utils:Error [Errno 2] No such file or directory: '/bin/python': '/bin/python' while executing command python setup.py egg_info
Traceback (most recent call last):
  File "/usr/local/bin/pipenv", line 11, in <module>
    sys.exit(cli())
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/pipenv/cli.py", line 1855, in install
    do_init(dev=dev, allow_global=system, ignore_pipfile=ignore_pipfile, system=system, skip_lock=skip_lock, verbose=verbose, concurrent=concurrent, deploy=deploy, pre=pre)
  File "/usr/local/lib/python3.6/site-packages/pipenv/cli.py", line 1320, in do_init
    do_lock(system=system, pre=pre)
  File "/usr/local/lib/python3.6/site-packages/pipenv/cli.py", line 1050, in do_lock
    pre=pre
  File "/usr/local/lib/python3.6/site-packages/pipenv/utils.py", line 459, in resolve_deps
    resolved_tree.update(resolver.resolve(max_rounds=PIPENV_MAX_ROUNDS))
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/piptools/resolver.py", line 102, in resolve
    has_changed, best_matches = self._resolve_one_round()
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/piptools/resolver.py", line 200, in _resolve_one_round
    for dep in self._iter_dependencies(best_match):
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/piptools/resolver.py", line 296, in _iter_dependencies
    dependencies = self.repository.get_dependencies(ireq)
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/piptools/repositories/pypi.py", line 153, in get_dependencies
    result = reqset._prepare_file(self.finder, ireq)
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/pip/req/req_set.py", line 639, in _prepare_file
    abstract_dist.prep_for_dist()
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/pip/req/req_set.py", line 134, in prep_for_dist
    self.req_to_install.run_egg_info()
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/pip/req/req_install.py", line 438, in run_egg_info
    command_desc='python setup.py egg_info')
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/pip/utils/__init__.py", line 667, in call_subprocess
    cwd=cwd, env=env)
  File "/usr/local/lib/python3.6/subprocess.py", line 709, in __init__
    restore_signals, start_new_session)
  File "/usr/local/lib/python3.6/subprocess.py", line 1344, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: '/bin/python': '/bin/python'

يبدو أن هناك مشكلة في استخدام ONBUILD RUN مقابل RUN فقط. لست خبيرًا في عمال الرصيف ، سأضطر إلى معرفة الفرق بينهما.

erinxocon لا أعتقد أن هذه هي المشكلة. في المثال أعلاه ، أريكم مشكلة داخل حاوية قيد التشغيل وليس على أي صورة بناء خطوة.

erinxocon ، PIP_PYTHON_PATH فإنه يكسر وظيفة المحلل عندما تحتاج إلى تمرير --system :

def which(command, location=None, allow_global=False):
    if location is None:
        location = project.virtualenv_location

    if not allow_global:
        if os.name == 'nt':
            p = find_windows_executable(os.path.join(location, 'Scripts'), command)
        else:
            p = os.sep.join([location] + ['bin/{0}'.format(command)])
    else:
        if command == 'python':
            p = sys.executable

return p

نظرًا لأن galuszkak يستخدم --system لكن allow_global لا يتم تمريره من خلال نسخة which التي يتم تمريرها إلى وحدة الحل ، ولكن لا يوجد أيضًا Project.virtualenv_location بسبب العلم --system ، ينتهي بنا الأمر بالحصول على:

  1. location هو None
  2. Project.virtualenv_location هو None ( location لا يزال None )
  3. _not_ allow_global
  4. p = os.sep.join([None] + ['bin/{0}'.format(python)])

هذه هي الطريقة التي ننتهي بها مع /bin/python كمحاولة قيادة.

galuszkak اعتذارات لم أرى علامة -it sh تم تمريرها في

techalchemy منطقي. هل لديك رقعة في الأعمال ، أم يجب أن أقوم بذلك؟

erinxocongaluszkak كتب بالفعل التصحيح (# 1005) الذيnateprewitt قد أعرب عن بعض المخاوف حول ولكن لست متأكدا من أين أن يترك ذلك

erinxocon مرة أخرى ، لا شيء للاعتذار وشكرًا حقًا للنظر في

هل يمكننا الاتفاق / عدم الاتفاق على # 1005 كإصلاح؟ سأحاول المضي قدما في مناقشة هذا العلاقات العامة.

لقد صدمتني هذه المشكلة مرة أخرى اليوم ، ولكن في OS X في ظروف مختلفة تمامًا. تتبع المكدس أدناه.

➜  saudi git:(dev) ✗ pipenv install -r requirements.txt
Warning: the environment variable LANG is not set!
We recommend setting this in ~/.profile (or equivalent) for proper expected behavior.
Creating a virtualenv for this project…
⠋Traceback (most recent call last):
  File "/usr/local/bin/pew", line 7, in <module>
    from pew.pew import pew
  File "/usr/local/lib/python3.6/site-packages/pew/__init__.py", line 11, in <module>
    from . import pew
  File "/usr/local/lib/python3.6/site-packages/pew/pew.py", line 42, in <module>
    from pew._utils import (check_call, invoke, expandpath, own, env_bin_dir,
  File "/usr/local/lib/python3.6/site-packages/pew/_utils.py", line 22, in <module>
    encoding = locale.getlocale()[1] or 'ascii'
  File "/usr/local/Cellar/python3/3.6.3/Frameworks/Python.framework/Versions/3.6/lib/python3.6/locale.py", line 581, in getlocale
    return _parse_localename(localename)
  File "/usr/local/Cellar/python3/3.6.3/Frameworks/Python.framework/Versions/3.6/lib/python3.6/locale.py", line 490, in _parse_localename
    raise ValueError('unknown locale: %s' % localename)
ValueError: unknown locale: UTF-8

Virtualenv location:
Requirements.txt found, instead of Pipfile! Converting…
Warning: Your Pipfile now contains pinned versions, if your requirements.txt did.
We recommend updating your Pipfile to specify the "*" version, instead.
Requirements file provided! Importing into Pipfile…
Creating a virtualenv for this project…
⠋Traceback (most recent call last):
  File "/usr/local/bin/pew", line 7, in <module>
    from pew.pew import pew
  File "/usr/local/lib/python3.6/site-packages/pew/__init__.py", line 11, in <module>
    from . import pew
  File "/usr/local/lib/python3.6/site-packages/pew/pew.py", line 42, in <module>
    from pew._utils import (check_call, invoke, expandpath, own, env_bin_dir,
  File "/usr/local/lib/python3.6/site-packages/pew/_utils.py", line 22, in <module>
    encoding = locale.getlocale()[1] or 'ascii'
  File "/usr/local/Cellar/python3/3.6.3/Frameworks/Python.framework/Versions/3.6/lib/python3.6/locale.py", line 581, in getlocale
    return _parse_localename(localename)
  File "/usr/local/Cellar/python3/3.6.3/Frameworks/Python.framework/Versions/3.6/lib/python3.6/locale.py", line 490, in _parse_localename
    raise ValueError('unknown locale: %s' % localename)
ValueError: unknown locale: UTF-8

Virtualenv location:
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
CRITICAL:pip.utils:Error [Errno 2] No such file or directory: '/bin/python': '/bin/python' while executing command python setup.py egg_info
Traceback (most recent call last):
  File "/usr/local/bin/pipenv", line 11, in <module>
    sys.exit(cli())
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/pipenv/cli.py", line 1866, in install
    do_init(dev=dev, allow_global=system, ignore_pipfile=ignore_pipfile, system=system, skip_lock=skip_lock, verbose=verbose, concurrent=concurrent, deploy=deploy, pre=pre)
  File "/usr/local/lib/python3.6/site-packages/pipenv/cli.py", line 1330, in do_init
    do_lock(system=system, pre=pre)
  File "/usr/local/lib/python3.6/site-packages/pipenv/cli.py", line 1121, in do_lock
    pre=pre
  File "/usr/local/lib/python3.6/site-packages/pipenv/utils.py", line 461, in resolve_deps
    resolved_tree.update(resolver.resolve(max_rounds=PIPENV_MAX_ROUNDS))
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/piptools/resolver.py", line 102, in resolve
    has_changed, best_matches = self._resolve_one_round()
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/piptools/resolver.py", line 200, in _resolve_one_round
    for dep in self._iter_dependencies(best_match):
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/piptools/resolver.py", line 274, in _iter_dependencies
    for dependency in self.repository.get_dependencies(ireq):
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/piptools/repositories/pypi.py", line 153, in get_dependencies
    result = reqset._prepare_file(self.finder, ireq)
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/pip/req/req_set.py", line 523, in _prepare_file
    abstract_dist.prep_for_dist()
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/pip/req/req_set.py", line 134, in prep_for_dist
    self.req_to_install.run_egg_info()
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/pip/req/req_install.py", line 438, in run_egg_info
    command_desc='python setup.py egg_info')
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/pip/utils/__init__.py", line 667, in call_subprocess
    cwd=cwd, env=env)
  File "/usr/local/Cellar/python3/3.6.3/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py", line 709, in __init__
    restore_signals, start_new_session)
  File "/usr/local/Cellar/python3/3.6.3/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py", line 1344, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: '/bin/python': '/bin/python'

كانت قوقعتي ZSH. بعد ضبط LC_ALL و LANG في .zshrc ، كل شيء يعمل بشكل جيد. لكني لست متأكدًا من سبب تأثير LANG / LC_ALL على اختيار مترجم لغة Python.

galuszkak إنها مشكلة على نظام Mac على وجه التحديد بسبب مشكلات اللغة ، سأحاول أن أتذكر غدًا لتعقب مشكلة مبكرة في هذا المشروع حيث ناقش كينيث المشكلة مع تكوين shell الافتراضي ولكن بشكل أساسي إذا لم يتم تعيين الإعدادات المحلية الخاصة بك بشكل صحيح الثعبان يموت بشكل مروع

بالنسبة للعلاقات العامة ، أعتقد أننا بحاجة إلى نيت للتوقيع ، اسمحوا لي أن أجربه في العلاقات العامة

مرر system إلى الوظيفة ، حيث يتم تمرير which ، وقم بتمريرها إلى which تم تمريره.

لم يتم حل مشكلة kennethreitz ، لا يمكنك إغلاق الأشياء التي لم يتم إصلاحها بعد. المشكلة لا تزال قابلة للتكرار.

لا توجد حركة في 30 يومًا. سيعود إذا كان مهمًا

أنا مع هذه المشكلة على صور جبال الألب. اي حل؟

  • بايثون 3.6.2
  • pipenv ، الإصدار 8.2.6
Step 7/7 : RUN pipenv install --dev --system --verbose
 ---> Running in a3097251c098
Pipfile.lock (1b4750) out of date, updating to (6a9e01)…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
CRITICAL:pip.utils:Error [Errno 2] No such file or directory: '/bin/python': '/bin/python' while executing command python setup.py egg_info
Traceback (most recent call last):
  File "/usr/local/bin/pipenv", line 11, in <module>
    sys.exit(cli())
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/pipenv/cli.py", line 1866, in install
    do_init(dev=dev, allow_global=system, ignore_pipfile=ignore_pipfile, system=system, skip_lock=skip_lock, verbose=verbose, concurrent=concurrent, deploy=deploy, pre=pre)
  File "/usr/local/lib/python3.6/site-packages/pipenv/cli.py", line 1325, in do_init
    do_lock(system=system, pre=pre)
  File "/usr/local/lib/python3.6/site-packages/pipenv/cli.py", line 1121, in do_lock
    pre=pre
  File "/usr/local/lib/python3.6/site-packages/pipenv/utils.py", line 461, in resolve_deps
    resolved_tree.update(resolver.resolve(max_rounds=PIPENV_MAX_ROUNDS))
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/piptools/resolver.py", line 102, in resolve
    has_changed, best_matches = self._resolve_one_round()
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/piptools/resolver.py", line 200, in _resolve_one_round
    for dep in self._iter_dependencies(best_match):
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/piptools/resolver.py", line 296, in _iter_dependencies
    dependencies = self.repository.get_dependencies(ireq)
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/piptools/repositories/pypi.py", line 153, in get_dependencies
    result = reqset._prepare_file(self.finder, ireq)
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/pip/req/req_set.py", line 639, in _prepare_file
    abstract_dist.prep_for_dist()
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/pip/req/req_set.py", line 134, in prep_for_dist
    self.req_to_install.run_egg_info()
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/pip/req/req_install.py", line 438, in run_egg_info
    command_desc='python setup.py egg_info')
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/pip/utils/__init__.py", line 667, in call_subprocess
    cwd=cwd, env=env)
  File "/usr/local/lib/python3.6/subprocess.py", line 709, in __init__
    restore_signals, start_new_session)
  File "/usr/local/lib/python3.6/subprocess.py", line 1344, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: '/bin/python': '/bin/python'

سيتم حل ذلك عن طريق # 1097 إذا ومتى تم دمجها

إصدار @ kennethreitz لديه 23 يومًا الآن وليس 30 يومًا ، لذلك قمت بإغلاقه بسرعة كبيرة. أيضا هناك علاقات عامة معلقة بعد إغلاق أول واحد. لذلك لا يزال هناك إجراء معلق بشأن هذه القضية ...

يرجى إعادة فتح القضية.

يمكنني إعادة إنتاج هذا في الإصدار الأخير (9.0.1) ، يرجى إعادة فتحه.

jacebrowning شكرًا للتقرير ولكن هذا لم يتم إصلاحه في 9.0.1 ، لم يتم دمج # 1005 إلا بعد إصدار 9.0.1. حاول مع السيد ومعرفة ما إذا كان قد تم حلها

لقد حاولت للتو ، وبدأت pip install git+git://github.com/pypa/pipenv.git@master و pipenv install --dev --system العمل في صورة عامل الإرساء python:3.6.3 . هل يمكن إصدار تحرير آخر؟

يمكنني إعادة حل المشكلة في الماجستير. على الرغم من إغلاقه ، إلا أن PR # 1097 الذي يفترض أنه حل هذه المشكلة لم يتم دمجه فعليًا في النظام الرئيسي. يرجى إعادة الفتح

مرحبًا ، لقد وجدت هذه المشكلة للتو اليوم ، هل هناك طريقة أخرى لاستخدام Pipenv في حاوية جبال الألب؟

LuRsT أنا فقط أقوم بالتثبيت عبر git الالتزام sha ، الذي يحتوي على الإصلاح.

حاليا في انتظار إصدار جديد.

RUN set -ex && pip install git+git://github.com/pypa/pipenv.git<strong i="8">@8378a1b104f2d817790a05da370bef0a1b00f452</strong>

تحرير: ستحتاج إلى تثبيت git حتى يعمل هذا.

رائع ، شكرًا sbdchd!

لسوء الحظ ، ما زلت أواجه هذا في كل من حاويات python:3.6.3 و ubuntu:17.10 ، مع ذكر جميع إصدارات pipenv هنا ، بما في ذلك الإصدار الذي اقترحه sbdchd .

تحرير: آسف كان ذلك قليلا غير مفيد. لم أتمكن من إعادة إنشائه باستخدام ملف Dockerfile أقل ، لذلك يجب أن يكون شيئًا محددًا (وربما غبيًا) أفعله. سأبلغ مرة أخرى إذا وجدت ذلك!

هذا هو Dockerfile الذي أستخدمه من أجل التطوير:

FROM python:3.6
ENV PYTHONUNBUFFERD 1

RUN apt-get update
RUN apt-get install netcat -y

# -- Install Pipenv:
RUN set -ex && pip install git+git://github.com/pypa/pipenv.git<strong i="6">@8378a1b104f2d817790a05da370bef0a1b00f452</strong>

# -- Install Application into container:
RUN set -ex && mkdir /app

WORKDIR /app

# -- Adding Pipfiles
COPY Pipfile Pipfile
COPY Pipfile.lock Pipfile.lock

# -- Install dependencies:
RUN set -ex && pipenv install --dev --system

WORKDIR /app

VOLUME ["/app"]

شكرا على ذلك. كما اتضح ، كان الخطأ في حالتي يحدث عند محاولة إنشاء ملف قفل. أقوم بنقل بعض المشاريع من requirements.txt في الوقت الحالي ، لذا تم التثبيت من ذلك في حاوية أثناء العبث. نظرًا لأن هذا ربما لا يكون حالة استخدام موصى بها ، فربما لا يستحق القلق بشأن الكثير؟

لقد أضفت طريقة حل سهلة الاستخدام في Docker في # 917. التعليق https://github.com/pypa/pipenv/issues/917#issuecomment -375312947. على الرغم من أنها ليست مثالية ، إلا أنني أعتقد أنها بسيطة للغاية. mcgeeco. كان السيناريو الخاص بي مشابهًا لسيناريو رغبتك في ذلك ، لذا ربما ستجد أن عملي البديل مفيد؟

أهلا!

حصلت للتو على نفس المشكلة هنا مع صورة Docker python:3.6 و pipenv-11.9.0 .

إليك نموذج Dockerfile:

FROM python:3.6

WORKDIR /app
COPY . /app/

RUN pip install pipenv
RUN pipenv install --system

EXPOSE 8000

CMD ["python", "main.py"]

في الوقت الحالي ، أستخدم حلJitsusama .

شكرا.

نفس الشيء هنا ، لا يزال هذا يتعرض للضرب.

نأسف للمشكلة المستمرة هنا أيها الأشخاص ، فقد واجهتنا بعض المشاكل مع البنية التحتية للاختبار الخاصة بنا ولكننا سننظر في هذا الأمر

مرحبًا ، أنا أستخدم أحدث إصدار من المكتبة 11.10.0 وما زلت أرى هذه المشكلة. الصورة الأساسية هي ubuntu: xenial.

Step 12/22 : COPY Pipfile /tmp/
 ---> Using cache
 ---> 416d6b4f86bf
Step 13/22 : COPY Pipfile.lock.master /tmp/Pipefile.lock
 ---> 40a28443be72
Step 14/22 : RUN cd /tmp && pip3.6 install pipenv==11.10.0 
 ---> Running in 883b8a638d52
Collecting pipenv==11.10.0
  Downloading https://XYZ/api/pypi/pypi/packages/e5/fd/740a41c68c38262265d73191fb686f38d26c4ea1ea6080a65b2b626bedc7/pipenv-11.10.0-py3-none-any.whl (5.6MB)
Collecting virtualenv-clone>=0.2.5 (from pipenv==11.10.0)
  Downloading https://XYZ/api/pypi/pypi/packages/6d/c2/dccb5ccf599e0c5d1eea6acbd058af7a71384f9740179db67a9182a24798/virtualenv_clone-0.3.0-py2.py3-none-any.whl
Requirement already satisfied: setuptools>=36.2.1 in /usr/local/lib/python3.6/site-packages (from pipenv==11.10.0)
Collecting certifi (from pipenv==11.10.0)
  Downloading https://XYZ/api/pypi/pypi/packages/fa/53/0a5562e2b96749e99a3d55d8c7df91c9e4d8c39a9da1f1a49ac9e4f4b39f/certifi-2018.1.18-py2.py3-none-any.whl (151kB)
Requirement already satisfied: pip>=9.0.1 in /usr/local/lib/python3.6/site-packages (from pipenv==11.10.0)
Collecting virtualenv (from pipenv==11.10.0)
  Downloading https://XYZ/api/pypi/pypi/packages/ed/ea/e20b5cbebf45d3096e8138ab74eda139595d827677f38e9dd543e6015bdf/virtualenv-15.2.0-py2.py3-none-any.whl (2.6MB)
Installing collected packages: virtualenv-clone, certifi, virtualenv, pipenv
Successfully installed certifi-2018.1.18 pipenv-11.10.0 virtualenv-15.2.0 virtualenv-clone-0.3.0
 ---> c9e452fdc262
Removing intermediate container 883b8a638d52
Step 15/22 : RUN set -ex  && pipenv install --dev --system
 ---> Running in 8c23d30ef730
+ pipenv install --dev --system
Creating a Pipfile for this project…
Traceback (most recent call last):
  File "/usr/local/bin/pipenv", line 11, in <module>
    sys.exit(cli())
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/pipenv/cli.py", line 366, in install
    selective_upgrade=selective_upgrade,
  File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 1730, in do_install
    skip_requirements=skip_requirements,
  File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 634, in ensure_project
    ensure_pipfile(validate=validate, skip_requirements=skip_requirements)
  File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 288, in ensure_pipfile
    project.create_pipfile(python=python)
  File "/usr/local/lib/python3.6/site-packages/pipenv/project.py", line 557, in create_pipfile
    config_parser = ConfigOptionParser(name=self.name)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pip9/baseparser.py", line 149, in __init__
    assert self.name
AssertionError
The command '/bin/sh -c set -ex  && pipenv install --dev --system' returned a non-zero code: 1

Ankitmaroo آسف للإحباط ، حيث ذكر عدد قليل من الأشخاص في أماكن مختلفة (أعلم أن هناك الكثير لتغطيته الآن) القطعة المهمة هي التأكد من أنك لا تستخدم RUN cd ولكن ذلك أنت تستخدم بالفعل WORKDIR /somedirectory لأنه (حاليًا ، معدة إعادة البناء) يتم التنصت على المسار (والعثور على الثعبان نتيجة لذلك) إلى حد ما عندما تحاول القيام بذلك من /

techalchemy للأسف ، لا يمكنني تأكيد ذلك. الحد الأدنى من ملف Dockerfile الخاص بي:

FROM python:3.6-alpine3.7

ENV PYTHONUNBUFFERED=1

WORKDIR app/

COPY Pipfile* app/

RUN set -x \
    && pip install --upgrade pip setuptools wheel pipenv \
    && pipenv install --system --dev

والخطأ:

+ pipenv install --system --dev
Creating a Pipfile for this project…
Traceback (most recent call last):
  File "/usr/local/bin/pipenv", line 11, in <module>
    sys.exit(cli())
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/pipenv/cli.py", line 366, in install
    selective_upgrade=selective_upgrade,
  File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 1730, in do_install
    skip_requirements=skip_requirements,
  File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 634, in ensure_project
    ensure_pipfile(validate=validate, skip_requirements=skip_requirements)
  File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 288, in ensure_pipfile
    project.create_pipfile(python=python)
  File "/usr/local/lib/python3.6/site-packages/pipenv/project.py", line 585, in create_pipfile
    'python_version': python_version(required_python)[: len('2.7')]
TypeError: 'NoneType' object is not subscriptable

وهو نفس ما ورد في # 1939.

هذه هي الإصدارات المثبتة:

Successfully installed certifi-2018.1.18 pipenv-11.10.0 virtualenv-15.2.0 virtualenv-clone-0.3.0

إذا قمت بدلاً من ذلك بربط نظام ثنائي بايثون ، فسيكون كل شيء على ما يرام.

RUN set -x \
    && pip install --upgrade pip setuptools wheel pipenv \
    && ln -sf /usr/local/bin/python /bin/python \
    && pipenv install --system --dev

Midnighter هل تقوم بالفعل بنسخ ملف الأنابيب؟

نعم

[[source]]
url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"

[packages]
Flask = "*"

[dev-packages]
pytest = "*"

[requires]
python_version = "3.6"

أتفق مع Midnighter. لا يزال ، انظر نفس الخطأ على النحو الوارد أعلاه.

Midnighter ، لا يمكنك تعيين WORKDIR إلى app/ ثم COPY Pipfile* app/ - ينقلك هذا إلى /app ثم نسخ Pipfile إلى /app/app مما يعني أن pipenv لا يجد ملف Pipfile للعمل معه. لقد فعلت هذا ببساطة ونجح:

FROM python:3.6-alpine3.7

ENV PYTHONUNBUFFERED=1


COPY Pipfile* app/

WORKDIR app/

RUN set -x \
    && pip install --upgrade pip setuptools wheel pipenv \
    && pipenv install --system --dev

ما هو إصدار Docker الذي تستخدمه؟ أنت على صواب ، لقد أخطأت في تبسيط Dockerfile ولكن لا الإصدار الذي نشرته هنا ولا إصدار آخر يعمل معي.

أنا على Docker version 17.09.0-ce, build afdb6d4 . عندما أحاول Dockerfile أعلاه أحصل على:

+ pipenv install --system --dev
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
ython: not found

عندما أستخدمه كما كنت أنوي في الأصل.

FROM python:3.6-alpine3.7

ENV PYTHONUNBUFFERED=1

WORKDIR /app

COPY Pipfile* /app/

RUN set -x \
    && pip install --upgrade pip setuptools wheel pipenv \
    && pipenv install --system --dev

أحصل على نفس الخطأ.

  • تأكد من نسخ ملف القفل
  • قمت بتشغيل ملف عامل الإرساء الذي قمت بلصقه بالضبط

لماذا يعد ملف القفل مطلبًا للعثور على ملف Python القابل للتنفيذ؟ خاصة وأنني لا أستخدم حتى علامة --deploy هناك. أنت على حق ، رغم ذلك ، أنه يعمل مع ملف قفل موجود.

Midnighter لأن pipenv يجب أن يقوم بتحليل التبعية مما يعني أنه يجب عليه القفل ما لم يكن لديه ملف قفل. ولكن ، إذا نجحت في تمرير —system فلن تتمكن من حل التبعية - وهذا يتطلب بيئة منعزلة و —system تقول بشكل أساسي "لا تصنع Virtualenv" وهو ما سنستخدمه للعزل. الرسائل ليست رائعة ولكن لدي بعض التغييرات لهذا الغرض.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات