Pip: Menggunakan --target dengan --editable menghasilkan kesalahan "internal"

Dibuat pada 3 Jun 2012  ·  22Komentar  ·  Sumber: pypa/pip

Sepertinya --target tidak didukung saat menggunakan --editable bersamaan. Alangkah baiknya jika ini berfungsi. Sementara itu harus ada beberapa diagnostik yang lebih baik seperti

c:\>pip install -t z:\1 -e git+https://github.com/kennethreitz/requests.git#egg=requests
menghasilkan

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

Komentar yang paling membantu

Saya akan menambahkan bahwa ini adalah masalah bagi pengembang Google Appengine yang perlu menginstal dependensi mereka di direktori di root aplikasi tetapi juga perlu menerapkan dependensi yang dapat diedit di checkout lokal sebagai bagian dari proses QA. Saat berada, editable perlu dihubungkan secara manual yang tidak praktis.

Semua 22 komentar

Mengalami kesalahan ini dengan pip install -t dir -e git+git://github.com/shazow/urllib3.git@f088037#egg=urllib3 juga.

saya juga mengalami kesalahan ini sekarang.
Ini tampaknya terjadi pada paket apa pun jika --target dan --editable digabungkan:
pip memanggil setup.py develop --home ... , tetapi --home hanya berlaku dengan setup.py install .

Jadi, pada akhirnya saya menemukan bahwa menggunakan opsi --src dengan paket yang dapat diedit alih-alih --target melakukan apa yang saya inginkan.

Mungkin --target harus memiliki efek yang sama seperti --src ketika --editable ditentukan atau dapat menampilkan pengguna dengan pesan kesalahan dan mungkin mengarahkan pengguna ke --src .

Mungkin --target harus memiliki efek yang sama seperti --src ketika --editable ditentukan

IMO perilaku yang diharapkan akan membuat / memperbarui easy_install.pth di direktori target .

Saya baru saja mengalami masalah yang sama. Seperti yang disarankan oleh @jezdez Anda dapat mengatasi ini dengan melakukan hal berikut (tanpa menggunakan --editable yaitu):

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

Saya sendiri melihat masalah serupa di sini:

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'

baris 290 di pip / commands / install.py adalah:

     lib_dir = home_lib(temp_target_dir)

Dari apa yang dapat saya lacak, pip telah membersihkan jalur ini di pip / req.py baris 1194 di mana ia menghapus sumber sementara.

     requirement.remove_temporary_source()

Saya dapat melihat meninggalkan pembersihan itu di sana apa adanya tetapi membungkusnya dengan blok yang ada atau coba sehingga pemasangan dapat dilanjutkan. Apakah ada yang melihat itu sebagai masalah?

@tima Saya memiliki masalah yang sama dengan direktori lib. Pip HEAD seharusnya memperbaiki ini tetapi setidaknya di CentOS masalah masih berlanjut. Dalam kasus khusus ini ada direktori lib64 dan bukan lib.

Saya memiliki masalah yang sama saat menggunakan --target (tetapi bukan --editable ).

Ini pelacakan balikku—

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,

 Mengunduh PyYAML-3.10.tar.gz (241kB): 241kB diunduh
 Jalankan setup.py egg_info untuk paket pyyaml
 melewatkan ekstensi Cython 'ext / _yaml.c' (up-to-date)
 Menginstal paket yang dikumpulkan: krcore, sympy, pyparsing, pyyaml
 Menjalankan setup.py develop untuk krcore
 penggunaan: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
 atau: -c --help [cmd1 cmd2 ...]
 atau: -c --help-commands
 atau: -c cmd --help
 error: opsi --home tidak dikenali
 Lengkapi keluaran dari perintah / usr / bin / python -c "import setuptools; __file __ = '/ tmp / krapp / src / krcore / setup.py'; exec (compile (open (__ file __). Read (). Replace ('\ r \ n ',' \ n '), __file__,' exec ')) "develop --no-deps --home = / tmp / tmpvKaRYp:
 penggunaan: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
 atau: -c --help [cmd1 cmd2 ...]
 atau: -c --help-commands
 atau: -c cmd --help
 error: opsi --home tidak dikenali
 ----------------------------------------
 Membersihkan...
 Perintah / usr / bin / python -c "import setuptools; __file __ = '/ tmp / krapp / src / krcore / setup.py'; exec (kompilasi (buka (__ file __). Read (). Replace ('\ r \ n ',' \ n '), __file__,' exec ')) "develop --no-deps --home = / tmp / tmpvKaRYp gagal dengan kode kesalahan 1 di / tmp / krapp / src / krcore

Saya mendapatkan 'error: opsi --home tidak dikenali' saat menggunakan --target dengan -r (--requirements)

: +1:

Berikut @YorickPeterse dan @jezdez Solusi disebabkan:
error: harus menyediakan home atau prefix / exec-prefix - bukan keduanya

--editable dan --target options tidak bekerja bersama

Saya telah mengalami masalah yang sama ...
Saya mencoba menggunakan pip untuk menginstal paket python di lokasi khusus (bukan virtualenv) dan saya memerlukan salah satunya (yang sedang saya kerjakan) agar dapat diedit.

Ini mungkin terkait dengan https://github.com/pypa/setuptools/issues/392

Dan karena satu perintah pip dapat memicu setup.py develop (untuk pkg yang dapat diedit) dan setup.py install (ketergantungan), satu-satunya solusi (sangat jelek) yang dapat saya pikirkan adalah dengan mengeluarkan 2 perintah:

  • satu untuk pkg dengan --no-deps
  • satu untuk dependensi saja (tidak ada cara sederhana di sini ...)

Akan jauh lebih bersih jika tidak perlu mengubah opsi baris perintah pip lainnya apakah --editable dilewatkan atau tidak.
Jadi saya kira ada dua cara untuk membuatnya bekerja:

  • membuat setuptools mendukung --home ie. memperbaiki https://github.com/pypa/setuptools/issues/392. Mungkin rumit, membaca detail masalah itu?
  • memiliki detail pip abstract setuptools dan menerapkan perilaku --target berbeda tergantung apakah memanggil setup.py develop atau setup.py install . mungkin lebih sederhana?

memiliki detail pip abstract setuptools dan mengimplementasikan --target behavior secara berbeda tergantung apakah memanggil setup.py develop atau setup.py install . mungkin lebih sederhana?

Kesulitan terbesar dengan opsi ini adalah pip bekerja untuk mengabstraksi detail sistem build (setuptools) sehingga solusi kasus khusus untuk masalah setuptools bekerja untuk tujuan tersebut.

Pada akhirnya saya berhasil melakukan apa yang saya inginkan, menggunakan --prefix , dan tanpa menggunakan kustom --install-option , jadi saya akhirnya dapat menggunakan opsi yang sama apakah saya lulus --editable atau tidak .

Namun saya harus menyesuaikan tata letak (debian) saya yang ada agar sesuai dengan pip default (paket situs), karena tidak ada opsi pip untuk menentukan tata letak ...

Mungkin fitur yang perlu dipertimbangkan untuk ditambahkan?

@jodohgratis

Ini membutuhkan label --target option .

dapatkah seseorang membagikan solusi terbaik apa yang menggunakan opsi -e dan -t? Apakah Anda menyarankan untuk menggunakan distutils karena mendukung opsi '--home'?

ada berita?

Saya masih menggunakan --editable dengan --prefix (bukan --target ) yang berfungsi untuk saya. Tetapi saya terjebak pada pip <9.0.0 karena perbedaan antara --prefix dan --target . detail lebih lanjut di https://github.com/pypa/pip/issues/4243

jika Anda ingin menggunakan opsi --prefix daripada --target Anda harus menyetel PYTHONPATH (menunjuk ke direktori paket situs yang akan dibuat) dengan benar sebelum Anda dapat memanggil pip -t . --prefix myprefix . Adakah cara elegan untuk menghindari ini?

Menutup untuk memindahkan sekumpulan masalah terkait ke satu masalah: # 4390.

Saya akan menambahkan bahwa ini adalah masalah bagi pengembang Google Appengine yang perlu menginstal dependensi mereka di direktori di root aplikasi tetapi juga perlu menerapkan dependensi yang dapat diedit di checkout lokal sebagai bagian dari proses QA. Saat berada, editable perlu dihubungkan secara manual yang tidak praktis.

Utas ini telah dikunci secara otomatis karena tidak ada aktivitas baru-baru ini setelah ditutup. Silakan buka masalah baru untuk bug terkait.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat