[python] 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/pkgpip를 입력하면 검색 할 다른 장소로 위치를 사용하는 것에 대해 이야기하고 있습니다 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 folderAND pypi에서 동일한 단일 호출로 패키지를 설치할 수 있습니다 .pip install -r requirements/production.txt

추신. 내보기 cookiecutter – djangopackage 기반 요구 사항 조직 폴더 요구 사항 및 사용을 분할하는 방법을 볼 포크.


답변

로부터 설치 – 패키지 페이지에서 간단히 실행할 수 있습니다 :

pip 설치 / srv / pkg / mypackage

여기서 / srv / pkg / mypackagesetup.py를 포함하는 디렉토리 입니다.


또한 1 , 아카이브 파일에서 설치할 수 있습니다.

pip install ./mypackage-1.0.4.tar.gz

1
질문에 언급되었지만 인기로 인해 포함되어 있습니다.


답변

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