Pip: يؤدي استخدام --target with - قابل للتعديل إلى حدوث خطأ "داخلي"

تم إنشاؤها على ٣ يونيو ٢٠١٢  ·  22تعليقات  ·  مصدر: pypa/pip

يبدو أن --target غير مدعوم عند استخدام --editable في نفس الوقت. سيكون من الجيد أن تعمل. وفي الوقت نفسه يجب أن يكون هناك بعض التشخيص أفضل مثل

c:\>pip install -t z:\1 -e git+https://github.com/kennethreitz/requests.git#egg=requests
النتائج في

Obtaining requests from git+https://github.com/kennethreitz/requests.git#egg=requests
  Updating c:\python\virtualenv\test\src\requests clone
  Running setup.py egg_info for package requests

Downloading/unpacking certifi>=0.0.7 (from requests)
  Running setup.py egg_info for package certifi

Downloading/unpacking oauthlib>=0.1.0,<0.2.0 (from requests)
  Running setup.py egg_info for package oauthlib

Downloading/unpacking chardet>=1.0.0 (from requests)
  Running setup.py egg_info for package chardet

Downloading/unpacking rsa (from oauthlib>=0.1.0,<0.2.0->requests)
  Running setup.py egg_info for package rsa

    warning: no files found matching 'README'
Downloading/unpacking pyasn1>=0.0.13 (from rsa->oauthlib>=0.1.0,<0.2.0->requests)
  Running setup.py egg_info for package pyasn1

Installing collected packages: requests, certifi, oauthlib, chardet, rsa, pyasn1
  Running setup.py develop for requests
    usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
       or: -c --help [cmd1 cmd2 ...]
       or: -c --help-commands
       or: -c cmd --help

    error: option --home not recognized
    Complete output from command c:\python\virtualenv\test\Scripts\python.exe -c "import setuptools; __file__='c:\\python\\virtualenv\\test\\src\\requests\\setup.py'; exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" develop --no-deps --home=c:\users\piotr\appdata\local\temp\tmp3abskl:
    usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]

   or: -c --help [cmd1 cmd2 ...]

   or: -c --help-commands

   or: -c cmd --help



error: option --home not recognized

----------------------------------------
Command c:\python\virtualenv\test\Scripts\python.exe -c "import setuptools; __file__='c:\\python\\virtualenv\\test\\src\\requests\\setup.py'; exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" develop --no-deps --home=c:\users\piotr\appdata\local\temp\tmp3abskl failed with error code 1 in c:\python\virtualenv\test\src\requests
Storing complete log in C:\Users\Piotr\AppData\Roaming\pip\pip.log
editable target auto-locked bug

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

أود أن أضيف أن هذه مشكلة لمطوري Google Appengine الذين يحتاجون إلى تثبيت تبعياتهم في دليل في جذر التطبيق ولكنهم يحتاجون أيضًا إلى نشر تبعية قابلة للتعديل في عملية دفع محلية كجزء من عملية ضمان الجودة. أثناء وضعه ، سيحتاج الملف القابل للتحرير إلى الارتباط الرمزي يدويًا وهو أمر مرهق.

ال 22 كومينتر

حدوث هذا الخطأ مع pip install -t dir -e git+git://github.com/shazow/urllib3.git@f088037#egg=urllib3 أيضًا.

لقد واجهت هذا الخطأ الآن.
يبدو أن هذا يحدث في أي حزمة إذا تم دمج --target و --editable :
pip calls setup.py develop --home ... ، لكن --home قابل للتطبيق فقط مع setup.py install .

لذلك ، اكتشفت في النهاية أن استخدام الخيار --src مع الحزم القابلة للتعديل بدلاً من --target يفعل ما أريد.

ربما يجب أن يكون لـ --target نفس تأثير --src عند تحديد --editable أو يمكن أن يعرض للمستخدم رسالة خطأ وربما يوجه المستخدم إلى --src .

ربما يجب أن يكون للهدف --target نفس تأثير --src عند تحديد - قابل للتحرير

IMO سيؤدي السلوك المتوقع إلى إنشاء / تحديث easy_install.pth في الدليل target .

لقد واجهت نفس المشكلة للتو. كما اقترح jezdez ، يمكنك

git+ssh://[email protected]/some-user/some-repo.git#egg=Foo

أرى مشكلة مماثلة هنا بنفسي:

Cleaning up...
Exception:
Traceback (most recent call last):
  File "/efs/dev/bti/pip/1.3.1-build001/install/exec/2.7/lib/python/pip-1.3.1-py2.7.egg/pip/basecommand.py", line 139, in main
  status = self.run(options, args)
  File "/efs/dev/bti/pip/1.3.1-build001/install/exec/2.7/lib/python/pip-1.3.1-py2.7.egg/pip/commands/install.py", line 291, in run
    for item in os.listdir(lib_dir):
OSError: [Errno 2] No such file or directory: '/tmp/tmppjdGHI/lib/python'

السطر 290 في النقطة / الأوامر / install.py هو:

     lib_dir = home_lib(temp_target_dir)

من خلال ما يمكنني تتبعه ، قامت النقطة بالفعل بتنظيف هذا المسار في pip / req.py line 1194 حيث تزيل المصدر المؤقت.

     requirement.remove_temporary_source()

أستطيع أن أرى ترك هذا التنظيف هناك كما هو ولكن تغليفه بكتلة موجودة أو حاول أن يستمر التثبيت. هل يرى أي شخص ذلك على أنه مشكلة؟

tima لدي نفس المشكلة مع دليل lib. من المفترض أن Pip HEAD أصلحت هذا ولكن على الأقل في CentOS ، لا تزال المشكلة قائمة. في هذه الحالة بالذات ، يوجد دليل lib64 بدلاً من دليل lib.

لدي نفس المشكلة باستخدام --target (لكن ليس --editable ).

هذا هو التتبع الخاص بي -

Exception:
Traceback (most recent call last):
  File "/Users/beaum/homebrew/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/basecommand.py", line 139, in main
    status = self.run(options, args)
  File "/Users/beaum/homebrew/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg/pip/commands/install.py", line 294, in run
    for item in os.listdir(lib_dir):
OSError: [Errno 2] No such file or directory: '/var/folders/00/1hyxr000h01000cxqpysvccm0063vq/T/tmpc_E_Bl/lib/python'

+1 ،

 تنزيل PyYAML-3.10.tar.gz (241 كيلوبايت): تم تنزيل 241 كيلوبايت
 تشغيل setup.py egg_info لحزمة pyyaml
 تخطي امتداد "ext / _yaml.c" Cython (محدث)
 تثبيت الحزم المجمعة: krcore، sympy، pyparsing، pyyaml
 تشغيل setup.py Develop for krcore
 الاستخدام: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
 أو: -c --help [cmd1 cmd2 ...]
 أو: -c - help-command
 أو: -c cmd --help
 خطأ: الخيار - المنزل غير معروف
 الإخراج الكامل من الأمر / usr / bin / python -c "استيراد setuptools ؛ __ ملف __ = '/ tmp / krapp / src / krcore / setup.py' ؛ exec (تجميع (فتح (__ ملف __). قراءة (). استبدل ('\ r \ n '،' \ n ')، __file__،' exec ')) "تطوير - no-deps --home = / tmp / tmpvKaRYp:
 الاستخدام: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
 أو: -c --help [cmd1 cmd2 ...]
 أو: -c - help-command
 أو: -c cmd --help
 خطأ: الخيار - المنزل غير معروف
 ----------------------------------------
 تنظيف...
 الأمر / usr / bin / python -c "import setuptools ؛ __file __ = '/ tmp / krapp / src / krcore / setup.py' ؛ exec (compile (open (__ file __). read (). replace ('\ r \ n '،' \ n ')، __file__،' exec ')) "تطوير - no-deps --home = / tmp / tmpvKaRYp فشل مع رمز الخطأ 1 في / tmp / krapp / src / krcore

أحصل على "خطأ: الخيار - لم يتم التعرف على الصفحة الرئيسية" عند استخدام --target with -r (--requirements)

: +1:

تسبب اتباع الحل البديل jezdez في:
خطأ: يجب توفير إما home أو البادئة / exec-prefix - وليس كلاهما

- خيارات قابلة للتعديل و - لا تعمل معًا

لقد كنت أواجه نفس المشكلة ...
أحاول استخدام النقطة لتثبيت حزم Python في موقع مخصص (وليس Virtualenv) وأحتاج إلى واحد منهم (الذي أعمل عليه) ليكون قابلاً للتعديل.

من المحتمل أن يكون هذا مرتبطًا بـ https://github.com/pypa/setuptools/issues/392

ونظرًا لأن أمر نقطة واحدة يمكنه تشغيل كل من setup.py develop (لـ pkg القابل للتعديل) و setup.py install (التبعيات) ، فإن الحل الوحيد (القبيح جدًا) الذي يمكنني التفكير فيه هو إصدار أمرين:

  • واحد لـ pkg --no-deps
  • واحد من أجل التبعيات فقط (لا توجد طريقة بسيطة هنا ...)

سيكون أكثر نظافة إذا لم تكن هناك حاجة لتغيير خيارات سطر أوامر النقطة الأخرى سواء تم تمرير --editable أم لا.
لذلك أعتقد أن هناك طريقتان لجعل هذا يعمل:

  • جعل setuptools يدعم --home ie. تحديد https://github.com/pypa/setuptools/issues/392. ربما تكون صعبة ، قراءة تفاصيل هذه المسألة؟
  • الحصول على تفاصيل أداة إعداد النقطة المجردة وتنفيذ سلوك --target مختلف اعتمادًا على ما إذا كان يستدعي setup.py develop أو setup.py install . ربما أبسط؟

الحصول على تفاصيل أداة إعداد النقطة المجردة وتنفيذ سلوك --target مختلف اعتمادًا على ما إذا كان يستدعي setup.py develop أو setup.py install . ربما أبسط؟

تكمن الصعوبة الأكبر في هذا الخيار في أن النقطة تعمل على تجريد تفاصيل نظام الإنشاء (setuptools) بحيث تعمل الحلول ذات الحالة الخاصة لمشكلات setuptools ضد هذا الهدف.

في النهاية تمكنت من فعل ما أريد ، باستخدام --prefix ، وبدون استخدام أي مخصص --install-option ، لذا يمكنني أخيرًا استخدام نفس الخيارات سواء مررت --editable أم لا .

ومع ذلك ، فقد اضطررت إلى تعديل تخطيطي الحالي (دبيان) بطريقة ما لمطابقة النقطة الافتراضية (حزم الموقع) ، نظرًا لعدم وجود خيار نقطة لتحديد التخطيط ...

ربما ميزة للنظر في الإضافة؟

تضمين التغريدة

هذا يحتاج إلى تسمية --target option .

هل يمكن لأي شخص أن يشارك ما هو أفضل حل بديل لاستخدام الخيارين -e و -t؟ هل تقترح استخدام أدوات التوزيع لأنها تدعم خيار "المنزل"؟

أى اخبار؟

ما زلت أستخدم --editable مع --prefix (بدلاً من --target ) الذي يقوم بالمهمة نيابة عني. لكنني عالق عند النقطة <9.0.0 بسبب الاختلاف بين --prefix و --target . مزيد من التفاصيل في https://github.com/pypa/pip/issues/4243

إذا كنت تريد استخدام الخيار --prefix بدلاً من --target ، فأنت بحاجة إلى تعيين PYTHONPATH (يشير إلى حزم الموقع التي سيتم إنشاؤها) dir بشكل صحيح قبل أن تتمكن من الاتصال بـ pip -t . --prefix myprefix . هل هناك طريقة أنيقة للتحايل على هذا؟

الإغلاق لنقل مجموعة من القضايا ذات الصلة إلى عدد واحد: # 4390.

أود أن أضيف أن هذه مشكلة لمطوري Google Appengine الذين يحتاجون إلى تثبيت تبعياتهم في دليل في جذر التطبيق ولكنهم يحتاجون أيضًا إلى نشر تبعية قابلة للتعديل في عملية دفع محلية كجزء من عملية ضمان الجودة. أثناء وضعه ، سيحتاج الملف القابل للتحرير إلى الارتباط الرمزي يدويًا وهو أمر مرهق.

تم قفل سلسلة الرسائل هذه تلقائيًا نظرًا لعدم وجود أي نشاط حديث بعد إغلاقه. الرجاء فتح قضية جديدة للأخطاء ذات الصلة.

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