pip를 사용하여 로컬 파일 시스템 폴더에서 virtualenv로 Python 패키지 설치
로컬 파일 시스템에서 pip를 사용하여 패키지를 설치할 수 있습니까?
python setup.py sdist
적절한 tar.gz 파일을 만든 패키지를 실행 했습니다. 이 파일은 내 시스템의에 저장됩니다 /srv/pkg/mypackage/mypackage-0.1.0.tar.gz
.
이제 가상 환경에서 pypi 또는 특정 로컬 위치에서 패키지를 설치하고 싶습니다 /srv/pkg
.
이게 가능해?
추신 : 나는 내가 지정할 수 있음을 알고있다 pip install /srv/pkg/mypackage/mypackage-0.1.0.tar.gz
. 그것은 효과가 있지만, /srv/pkg
입력하면 pip가 검색 할 다른 장소로 위치를 사용하는 것에 대해 이야기하고 있습니다 pip install mypackage
.
나는 당신이 찾고있는 것이 --find-links
옵션 이라고 확신합니다 .
index.html
모든 패키지에 대한 링크를 나열하는 로컬 패키지 색인에 대한 더미를 생성해야 할 수도 있습니다 . 이 도구는 다음을 도와줍니다.
https://github.com/wolever/pip2pi
는 어때::
pip install --help
...
-e, --editable <path/url> Install a project in editable mode (i.e. setuptools
"develop mode") from a local project path or a VCS url.
예를 들어 pip install -e /srv/pkg
여기서 / srv / pkg는 'setup.py'를 찾을 수있는 최상위 디렉토리입니다.
설치 pyfuzzy
중이지만 PyPI에 없습니다. 메시지를 반환합니다 : No matching distribution found for pyfuzzy
.
나는 대답을 시도했다
pip install --no-index --find-links=file:///Users/victor/Downloads/pyfuzzy-0.1.0 pyfuzzy
그러나 작동하지 않으며 다음 오류를 반환합니다.
인덱스 무시 : https://pypi.python.org/simple pyfuzzy 수집 pyfuzzy 요구 사항을 충족하는 버전을 찾을 수 없습니다 (버전에서) pyfuzzy에 대해 일치하는 분포가 없습니다.
마침내 나는 거기에 간단한 좋은 방법을 찾았습니다 : https://pip.pypa.io/en/latest/reference/pip_install.html
Install a particular source archive file.
$ pip install ./downloads/SomePackage-1.0.4.tar.gz
$ pip install http://my.package.repo/SomePackage-1.0.4.zip
그래서 다음 명령이 나를 위해 일했습니다.
pip install ../pyfuzzy-0.1.0.tar.gz.
그것이 당신을 도울 수 있기를 바랍니다.
이것이 내가 사용한 해결책입니다.
import pip
def install(package):
# Debugging
# pip.main(["install", "--pre", "--upgrade", "--no-index",
# "--find-links=.", package, "--log-file", "log.txt", "-vv"])
pip.main(["install", "--upgrade", "--no-index", "--find-links=.", package])
if __name__ == "__main__":
install("mypackagename")
raw_input("Press Enter to Exit...\n")
나는 이것을 pip 설치 예제 와 다른 질문에 대한 Rikard의 답변 에서 함께 정리했습니다 . "--pre"인수를 사용하면 비 프로덕션 버전을 설치할 수 있습니다. "--no-index"인수는 PyPI 인덱스를 검색하지 않습니다. "--find-links =." 로컬 폴더에서 인수를 검색합니다 (상대 또는 절대 일 수 있음). 디버깅을 위해 "--log-file", "log.txt"및 "-vv"인수를 사용했습니다. "-업그레이드"인수를 사용하면 이전 버전보다 최신 버전을 설치할 수 있습니다.
또한 제거하는 좋은 방법을 찾았습니다. 이것은 여러 다른 파이썬 환경이있을 때 유용합니다. 의도하지 않은 설치 제거를 방지하기위한 안전 조치와 함께 "install"대신 "uninstall"을 사용하는 것과 동일한 기본 형식입니다.
import pip
def uninstall(package):
response = raw_input("Uninstall '%s'? [y/n]:\n" % package)
if "y" in response.lower():
# Debugging
# pip.main(["uninstall", package, "-vv"])
pip.main(["uninstall", package])
pass
if __name__ == "__main__":
uninstall("mypackagename")
raw_input("Press Enter to Exit...\n")
로컬 폴더에는 install.py, uninstall.py, mypackagename-1.0.zip 파일이 있습니다.
--find-links 옵션 은 작업을 수행하며 requirements.txt
파일 에서 작동 합니다!
패키지 아카이브를 일부 폴더에 넣고 요구 사항 파일을 변경하지 않고 최신 폴더를 가져올 수 있습니다. 예를 들면 requirements
다음과 같습니다.
.
└───requirements.txt
└───requirements
├───foo_bar-0.1.5-py2.py3-none-any.whl
├───foo_bar-0.1.6-py2.py3-none-any.whl
├───wiz_bang-0.7-py2.py3-none-any.whl
├───wiz_bang-0.8-py2.py3-none-any.whl
├───base.txt
├───local.txt
└───production.txt
지금 requirements/base.txt
넣어 :
--find-links=requirements
foo_bar
wiz_bang>=0.8
독점 패키지를 업데이트하는 깔끔한 방법
이 방법으로 local folder
AND pypi
에서 동일한 단일 호출로 패키지를 설치할 수 있습니다 .pip install -r requirements/production.txt
추신. 내보기 cookiecutter - djangopackage 기반 요구 사항 조직 폴더 요구 사항 및 사용을 분할하는 방법을 볼 포크.
virtualenv와 requirements.txt
파일 이 있다고 가정하면 이 파일 내부에서 패키지를 가져올 위치를 정의 할 수 있습니다.
# Published pypi packages
PyJWT==1.6.4
email_validator==1.0.3
# Remote GIT repo package, this will install as django-bootstrap-themes
git+https://github.com/marquicus/django-bootstrap-themes#egg=django-bootstrap-themes
# Local GIT repo package, this will install as django-knowledge
git+file:///soft/SANDBOX/python/django/forks/django-knowledge#egg=django-knowledge
디렉토리 내 requirements.txt
및 egg_dir
디렉토리로 요구 사항 보유
로컬 캐시를 빌드 할 수 있습니다.
$ pip download -r requirements.txt -d eggs_dir
그런 다음 "캐시"를 사용하는 것은 간단합니다 :
$ pip install -r requirements.txt --find-links=eggs_dir
로부터 설치 - 패키지 페이지에서 간단히 실행할 수 있습니다 :
pip 설치 / srv / pkg / mypackage
여기서 / srv / pkg / mypackage 는 setup.py를 포함하는 디렉토리 입니다.
또한 1 , 아카이브 파일에서 설치할 수 있습니다.
pip install ./mypackage-1.0.4.tar.gz
1 질문에 언급되었지만 인기로 인해 포함되어 있습니다.
나는 정말 간단하고 비참하게 실패한 것을 달성하려고 노력하고 있습니다. 어쩌면 나는 바보입니다.
어쨌든, Dockerfile
파이썬 패키지 zip 파일을 다운로드 하는 스크립트가 있고 (예 : GitHub에서) 설치하려는 file:///
경우 다음 예제 와 같이 접두사를 사용하여 설치할 수 있습니다 .
$ wget https://example.com/mypackage.zip
$ echo "${MYPACKAGE_MD5} mypackage.zip" | md5sum --check -
$ pip install file:///.mypackage.zip
참고 : 패키지를 사용하여 바로 설치할 수 있다는 것을 알고 pip install https://example.com/mypackage.zip
있지만 필자의 경우 체크섬을 확인하고 싶었습니다. (파라노이드는 충분하지 않습니다) pip가 제공하는 다양한 옵션을 사용하려고 할 때 비참하게 실패했습니다 #md5
.
을 사용하여 직접 간단한 작업을 수행하는 것은 놀랍게도 실망 스럽습니다 pip
. 체크섬을 전달하고 설치 하기 전에pip
zip이 일치하는지 확인 하고 싶었 습니다.
나는 아마도 매우 어리석은 짓을하고 있었지만 결국 포기하고 이것을 선택했습니다. 다른 사람들이 비슷한 것을 시도하는 데 도움이되기를 바랍니다.
'development' 카테고리의 다른 글
Linux에 표준 종료 상태 코드가 있습니까? (0) | 2020.03.17 |
---|---|
Git의 기본 편집기로 Visual Studio Code를 사용하는 방법 (0) | 2020.03.17 |
자바의 숨겨진 기능 (0) | 2020.03.16 |
Kinect의 v2.0 Motion을 BVH 파일로 저장 (0) | 2020.03.16 |
jquery에 div가 있는지 확인 (0) | 2020.03.16 |