Pip: --target을 --editableκ³Ό ν•¨κ»˜ μ‚¬μš©ν•˜λ©΄ "λ‚΄λΆ€"였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

에 λ§Œλ“  2012λ…„ 06μ›” 03일  Β·  22μ½”λ©˜νŠΈ  Β·  좜처: pypa/pip

--editable λ₯Ό λ™μ‹œμ— μ‚¬μš©ν•  λ•Œ --target κ°€ μ§€μ›λ˜μ§€ μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. μž‘λ™ν•˜λ©΄ 쒋을 κ²ƒμž…λ‹ˆλ‹€. ν•œνŽΈ 더 λ‚˜μ€ 진단이 μžˆμ–΄μ•Όν•©λ‹ˆλ‹€.

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

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

이 λ¬Έμ œλŠ” μ•± 루트의 디렉터리에 쒅속성을 μ„€μΉ˜ν•΄μ•Όν•˜μ§€λ§Œ QA ν”„λ‘œμ„ΈμŠ€μ˜ μΌλΆ€λ‘œ 둜컬 체크 μ•„μ›ƒμ—μ„œ νŽΈμ§‘ κ°€λŠ₯ν•œ 쒅속성을 λ°°ν¬ν•΄μ•Όν•˜λŠ” Google Appengine κ°œλ°œμžμ—κ²ŒλŠ” 문제라고 λ§λΆ™μ˜€μŠ΅λ‹ˆλ‹€. κ·Έ μžλ¦¬μ—μžˆμ„ λ•Œ νŽΈμ§‘ κ°€λŠ₯ ν•­λͺ©μ€ μˆ˜λ™μœΌλ‘œ 심볼릭 λ§ν¬λ˜μ–΄μ•Όν•˜λ―€λ‘œ 번거 λ‘­μŠ΅λ‹ˆλ‹€.

λͺ¨λ“  22 λŒ“κΈ€

pip install -t dir -e git+git://github.com/shazow/urllib3.git@f088037#egg=urllib3 μ—μ„œλ„μ΄ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

λ‚˜λŠ” λ˜ν•œ μ§€κΈˆμ΄ 였λ₯˜κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.
--target 및 --editable κ°€ κ²°ν•© 된 경우 λͺ¨λ“  νŒ¨ν‚€μ§€μ—μ„œ λ°œμƒν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.
pipλŠ” setup.py develop --home ... ν˜ΈμΆœν•˜μ§€λ§Œ --home λŠ” setup.py install μ—λ§Œ μ μš©λ©λ‹ˆλ‹€.

κ·Έλž˜μ„œ κ²°κ΅­ λ‚˜λŠ” --target λŒ€μ‹  νŽΈμ§‘ κ°€λŠ₯ν•œ νŒ¨ν‚€μ§€μ™€ ν•¨κ»˜ --src μ˜΅μ…˜μ„ μ‚¬μš©ν•˜λ©΄ λ‚΄κ°€ μ›ν•˜λŠ” 것을 ν•  수 μžˆλ‹€λŠ” 것을 μ•Œκ²Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.

μ–΄μ©Œλ©΄ --target 것과 같은 νš¨κ³Όκ°€ μžˆμ–΄μ•Ό --src ν•˜λ©΄ --editable 지정 λ˜λŠ” 였λ₯˜ λ©”μ‹œμ§€λ₯Ό μ‚¬μš©μžμ—κ²Œ μ œμ‹œν•˜κ³  μ–΄μ©Œλ©΄μ— λŒ€ν•œ μ‚¬μš©μž 지점 수 --src .

--editable이 μ§€μ •λœ 경우 --target은 --src와 λ™μΌν•œ 효과λ₯Ό κ°€μ Έμ•Όν•©λ‹ˆλ‹€.

IMOλŠ” μ˜ˆμƒλ˜λŠ” λ™μž‘μ΄ target 디렉토리에 easy_install.pthλ₯Ό 생성 / μ—…λ°μ΄νŠΈν•©λ‹ˆλ‹€.

λ‚˜λŠ” 방금 같은 문제λ₯Ό κ²½ν—˜ν–ˆμŠ΅λ‹ˆλ‹€. @jezdezκ°€ μ œμ•ˆν•œλŒ€λ‘œ λ‹€μŒμ„ μˆ˜ν–‰ ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€ (--editable μ‚¬μš©ν•˜μ§€ μ•Šκ³ ).

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'

pip / commands / install.py의 290 행은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

     lib_dir = home_lib(temp_target_dir)

λ‚΄κ°€ 좔적 ν•  μˆ˜μžˆλŠ” κ²ƒμ—μ„œ pipλŠ” μž„μ‹œ μ†ŒμŠ€λ₯Ό μ œκ±°ν•˜λŠ” pip / req.py 라인 1194μ—μ„œ 이미이 경둜λ₯Ό μ •λ¦¬ν–ˆμŠ΅λ‹ˆλ‹€.

     requirement.remove_temporary_source()

κ·Έ 정리λ₯Ό κ·ΈλŒ€λ‘œ λ‘λŠ” 것을 λ³Ό 수 μžˆμ§€λ§Œ μ„€μΉ˜λ₯Ό 계속할 수 μžˆλ„λ‘ exist λ˜λŠ” try λΈ”λ‘μœΌλ‘œ λž˜ν•‘ν•©λ‹ˆλ‹€. λˆ„κ΅¬λ“ μ§€ 그것을 문제둜 μƒκ°ν•©λ‹ˆκΉŒ?

@tima lib λ””λ ‰ν† λ¦¬μ—μ„œ λ™μΌν•œ λ¬Έμ œκ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€. Pip HEADλŠ”μ΄ 문제λ₯Ό μˆ˜μ •ν–ˆμ§€λ§Œ 적어도 CentOSμ—μ„œλŠ” μ—¬μ „νžˆ λ¬Έμ œκ°€ μ§€μ†λ©λ‹ˆλ‹€. 이 νŠΉλ³„ν•œ κ²½μš°μ—λŠ” lib 디렉토리 λŒ€μ‹  lib64 디렉토리가 μžˆμŠ΅λ‹ˆλ‹€.

--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 λ‹€μš΄λ‘œλ“œ (241kB) : 241kB λ‹€μš΄λ‘œλ“œ
 νŒ¨ν‚€μ§€ pyyaml에 λŒ€ν•΄ setup.py egg_info μ‹€ν–‰
 'ext / _yaml.c'Cython ν™•μž₯ (μ΅œμ‹ ) κ±΄λ„ˆ λ›°κΈ°
 μˆ˜μ§‘ 된 νŒ¨ν‚€μ§€ μ„€μΉ˜ : krcore, sympy, pyparsing, pyyaml
 krcore 용 setup.py 개발 μ‹€ν–‰
 μ‚¬μš©λ²• : -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
 λ˜λŠ” : -c --help [cmd1 cmd2 ...]
 λ˜λŠ” : -c --help-commands
 λ˜λŠ” : -c cmd --help
 였λ₯˜ : --home μ˜΅μ…˜μ΄ μΈμ‹λ˜μ§€ μ•ŠμŒ
 / 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 :
 μ‚¬μš©λ²• : -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
 λ˜λŠ” : -c --help [cmd1 cmd2 ...]
 λ˜λŠ” : -c --help-commands
 λ˜λŠ” : -c cmd --help
 였λ₯˜ : --home μ˜΅μ…˜μ΄ μΈμ‹λ˜μ§€ μ•ŠμŒ
 ----------------------------------------
 μ²­μ†Œ...
 λͺ…λ Ή / 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κ°€ / tmp / krapp / src / krcore의 였λ₯˜ μ½”λ“œ 1κ³Ό ν•¨κ»˜ μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€.

-r (--requirements)와 ν•¨κ»˜ --target을 μ‚¬μš©ν•  λ•Œ '였λ₯˜ : μ˜΅μ…˜ --home이 μΈμ‹λ˜μ§€ μ•ŠμŒ'이 ν‘œμ‹œλ©λ‹ˆλ‹€.

: +1 :

@YorickPeterse 및 @jezdez ν•΄κ²° 방법에 따라 λ‹€μŒμ΄ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.
였λ₯˜ : home λ˜λŠ” prefix / exec-prefix 쀑 ν•˜λ‚˜λ₯Ό μ œκ³΅ν•΄μ•Όν•©λ‹ˆλ‹€.

--editable 및 --target μ˜΅μ…˜μ€ ν•¨κ»˜ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” 같은 문제λ₯Ό κ²ͺκ³  μžˆμŠ΅λ‹ˆλ‹€ ...
pipλ₯Ό μ‚¬μš©ν•˜μ—¬ μ‚¬μš©μž 지정 μœ„μΉ˜ (virtualenvκ°€ μ•„λ‹˜)에 파이썬 νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ν•˜λ €κ³ ν•˜λŠ”λ° 그쀑 ν•˜λ‚˜ (λ‚΄κ°€ μž‘μ—…μ€‘μΈ νŒ¨ν‚€μ§€)λ₯Ό νŽΈμ§‘ ν•  수 μžˆμ–΄μ•Όν•©λ‹ˆλ‹€.

https://github.com/pypa/setuptools/issues/392 와 κ΄€λ ¨μ΄μžˆμ„ 수

그리고 ν•˜λ‚˜μ˜ pip λͺ…령이 setup.py develop (νŽΈμ§‘ κ°€λŠ₯ν•œ pkg의 경우) 및 setup.py install (쒅속성) λͺ¨λ‘λ₯Ό 트리거 ν•  수 있기 λ•Œλ¬Έμ— μ œκ°€ 생각할 μˆ˜μžˆλŠ” μœ μΌν•œ (맀우 μΆ”μ•…ν•œ) ν•΄κ²° 방법은 λ‹€μŒ 두 λͺ…령을 μ‹€ν–‰ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

  • --no-deps νŒ¨ν‚€μ§€ 용 1 개
  • ν•˜λ‚˜λŠ” 쒅속성 μ „μš©μž…λ‹ˆλ‹€ (μ—¬κΈ°μ—λŠ” κ°„λ‹¨ν•œ 방법이 μ—†μŠ΅λ‹ˆλ‹€ ...)

--editable 전달 여뢀에 관계없이 λ‹€λ₯Έ pip λͺ…λ Ή 쀄 μ˜΅μ…˜μ„ λ³€κ²½ν•  ν•„μš”κ°€ μ—†λ‹€λ©΄ 훨씬 더 깔끔 ν•  κ²ƒμž…λ‹ˆλ‹€.
κ·Έλž˜μ„œ λ‚˜λŠ” 이것을 μž‘λ™μ‹œν‚€λŠ” 두 가지 방법이 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

  • setuptools 지원 --home ie. https://github.com/pypa/setuptools/issues/392 μˆ˜μ •
  • pip 좔상 setuptools μ„ΈλΆ€ 정보λ₯Ό κ°–κ³  setup.py develop λ˜λŠ” setup.py install 호좜 여뢀에 따라 --target λ™μž‘μ„ λ‹€λ₯΄κ²Œ κ΅¬ν˜„ν•©λ‹ˆλ‹€. 더 κ°„λ‹¨ν• κΉŒμš”?

pip 좔상 setuptools μ„ΈλΆ€ 정보λ₯Ό κ°–κ³  setup.py develop λ˜λŠ” setup.py install 호좜 여뢀에 따라 --target λ™μž‘μ„ λ‹€λ₯΄κ²Œ κ΅¬ν˜„ν•©λ‹ˆλ‹€. 더 κ°„λ‹¨ν• κΉŒμš”?

이 μ˜΅μ…˜μ˜ κ°€μž₯ 큰 어렀움은 pipκ°€ λΉŒλ“œ μ‹œμŠ€ν…œ (setuptools)의 μ„ΈλΆ€ 사항을 μΆ”μƒν™”ν•˜κΈ° μœ„ν•΄ λ…Έλ ₯ν•˜κ³  μžˆμœΌλ―€λ‘œ setuptools λ¬Έμ œμ— λŒ€ν•œ νŠΉλ³„ν•œ 경우 ν•΄κ²° 방법이 ν•΄λ‹Ή λͺ©ν‘œμ— λ§žμ§€ μ•ŠλŠ”λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

κ²°κ΅­ λ‚˜λŠ” --prefix λ₯Ό μ‚¬μš©ν•˜κ³  μ‚¬μš©μž μ •μ˜ --install-option λ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šκ³  μ›ν•˜λŠ” 것을 μˆ˜ν–‰ ν•  수 μžˆμ—ˆμœΌλ―€λ‘œ λ§ˆμΉ¨λ‚΄ --editable 톡과 여뢀에 관계없이 λ™μΌν•œ μ˜΅μ…˜μ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. .

κ·ΈλŸ¬λ‚˜ λ ˆμ΄μ•„μ›ƒμ„ μ§€μ •ν•˜λŠ” pip μ˜΅μ…˜μ΄ μ—†κΈ° λ•Œλ¬Έμ— pip κΈ°λ³Έ (μ‚¬μ΄νŠΈ νŒ¨ν‚€μ§€)κ³Ό μΌμΉ˜ν•˜λ„λ‘ κΈ°μ‘΄ (λ°λΉ„μ•ˆ) λ ˆμ΄μ•„μ›ƒμ„ μ–΄λ–»κ²Œ λ“  μ‘°μ •ν•΄μ•Όν–ˆμŠ΅λ‹ˆλ‹€.

μΆ”κ°€ ν•  κΈ°λŠ₯이 μžˆμŠ΅λ‹ˆκΉŒ?

μ•ˆλ…•ν•˜μ„Έμš”.

--target option λ ˆμ΄λΈ”μ΄ ν•„μš”ν•©λ‹ˆλ‹€.

λˆ„κ΅°κ°€ -e 및 -t μ˜΅μ…˜μ„ λͺ¨λ‘ μ‚¬μš©ν•˜λŠ” κ°€μž₯ 쒋은 ν•΄κ²° 방법을 κ³΅μœ ν•΄ μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ? '--home'μ˜΅μ…˜μ„ μ§€μ›ν•˜κΈ° λ•Œλ¬Έμ— distutilsλ₯Ό μ‚¬μš©ν•  것을 μ œμ•ˆν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ?

μ–΄λ–€ μ†Œμ‹μ΄λΌλ„?

λ‚˜λŠ” μ—¬μ „νžˆ --prefix ( --target λŒ€μ‹ ) --editable 을 (λ₯Ό) μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ --prefix 와 --target 의 차이 λ•Œλ¬Έμ— pip <9.0.0μ—μ„œ 멈좰 μžˆμŠ΅λ‹ˆλ‹€. https://github.com/pypa/pip/issues/4243 μ—μ„œ μžμ„Έν•œ λ‚΄μš©

--target λŒ€μ‹  --prefix μ˜΅μ…˜μ„ μ‚¬μš©ν•˜λ €λ©΄ pip -t . --prefix myprefix ν˜ΈμΆœν•˜κΈ° 전에 PYTHONPATH (생성 될 μ‚¬μ΄νŠΈ νŒ¨ν‚€μ§€ 디렉터리λ₯Ό 가리킴)을 μ˜¬λ°”λ₯΄κ²Œ μ„€μ •ν•΄μ•Όν•©λ‹ˆλ‹€. pip -t . --prefix myprefix . 이것을 μš°νšŒν•˜λŠ” μš°μ•„ν•œ 방법이 μžˆμŠ΅λ‹ˆκΉŒ?

μ—¬λŸ¬ κ΄€λ ¨ 문제λ₯Ό 단일 문제둜 μ΄λ™ν•˜κΈ° μœ„ν•΄ 마무리 : # 4390.

이 λ¬Έμ œλŠ” μ•± 루트의 디렉터리에 쒅속성을 μ„€μΉ˜ν•΄μ•Όν•˜μ§€λ§Œ QA ν”„λ‘œμ„ΈμŠ€μ˜ μΌλΆ€λ‘œ 둜컬 체크 μ•„μ›ƒμ—μ„œ νŽΈμ§‘ κ°€λŠ₯ν•œ 쒅속성을 λ°°ν¬ν•΄μ•Όν•˜λŠ” Google Appengine κ°œλ°œμžμ—κ²ŒλŠ” 문제라고 λ§λΆ™μ˜€μŠ΅λ‹ˆλ‹€. κ·Έ μžλ¦¬μ—μžˆμ„ λ•Œ νŽΈμ§‘ κ°€λŠ₯ ν•­λͺ©μ€ μˆ˜λ™μœΌλ‘œ 심볼릭 λ§ν¬λ˜μ–΄μ•Όν•˜λ―€λ‘œ 번거 λ‘­μŠ΅λ‹ˆλ‹€.

이 μŠ€λ ˆλ“œλŠ” λ‹«νžŒ ν›„ 졜근 ν™œλ™μ΄ μ—†μ—ˆκΈ° λ•Œλ¬Έμ— μžλ™μœΌλ‘œ μž κ²ΌμŠ΅λ‹ˆλ‹€. κ΄€λ ¨ 버그에 λŒ€ν•œ μƒˆ 문제λ₯Όμ—¬μ‹­μ‹œμ˜€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰