우선 인터넷에 접속할 수 없는 서버에 Ansible을 설치했습니다. 하지만 내 접근 방식이 올바른지 궁금합니다.
처음에는 pip3
.
pip3 download ansible -d .
그 결과 다음 파일이 다운로드되었습니다.
ansible-2.9.4.tar.gz
cryptography-2.8-cp34-abi3-manylinux1_x86_64.whl
MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl
PyYAML-5.3.tar.gz
cffi-1.13.2-cp36-cp36m-manylinux1_x86_64.whl
Jinja2-2.11.1-py2.py3-none-any.whl
pycparser-2.19.tar.gz
six-1.14.0-py2.py3-none-any.whl
이제 이 파일을 원격 컴퓨터에서 사용할 수 있게 만들었으므로 다음을 사용하려고 했습니다.
pip3 install ansible-2.9.4.tar.gz
앤서블을 설치합니다.
이로 인해 다음 오류가 발생했습니다.
Processing ./ansible-2.9.4.tar.gz
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by
'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at
0x7f00726f9ef0>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /simple/jinja2/
그래서 Jinja2를 수동으로 설치하려고 했습니다.
pip3 install jinja2-2.11.1-py2.py3-none-any.whl
그러나 이것도 작동하지 않았습니다.
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection
broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at
0x7fd303a23940>: Failed to establish a new connection: [Errno -2] Name or service not known',)':
/simple/markupsafe/
Markupsafe를 설치한 후에는 Jinja2도 설치할 수 있습니다. 결국 pip3 install ansible-2.9.4.tar.gz
ansible을 성공적으로 설치했습니다.
이제 내 질문은 다음과 같습니다. pip
다운로드한 파일을 사용하여 종속성을 설치하도록 지시할 수 있는 방법이 있습니까 ? 아니면 모든 종속성이 있는 특정 Python 패키지를 오프라인으로 설치하는 더 쉬운 접근 방식이 있습니까?
귀하의 도움과 안부 인사에 감사드립니다. 야버스
답변1
pip
다운로드한 파일을 사용하여 종속성을 설치하도록 지시할 수 있는 방법이 있습니까 ? 아니면 모든 종속성이 있는 특정 Python 패키지를 오프라인으로 설치하는 더 쉬운 접근 방식이 있습니까?
나는 당신이 찾고 있는 것이 바로 그것이라고 믿습니다.--인덱스 없음그리고--찾기-링크. pip install
공식 pip install
옵션 문서에 따르면:
--인덱스 없음
패키지 색인을 무시합니다(대신 --find-links URL만 확인).
-f, --find-링크
HTML 파일에 대한 URL 또는 경로인 경우 아카이브에 대한 링크를 구문 분석합니다. 로컬 경로 또는 file:// url이 디렉토리인 경우 디렉토리 목록에서 아카이브를 찾으세요.
이러한 옵션을 사용하면 예를 들어 다음과 같은 작업을 수행할 수 있습니다. 로컬 설치:
pip3 install --no-index --find-links /some/path <package name>
또는 원격 설치(예: HTTP를 통해):
pip3 install --no-index --find-links http:\\remotes\server <package name>
ansible
귀하의 경우에는 간단히 패키지 이름을 다음과 같이 사용할 수 있습니다 .
pip3 install --no-index --find-links /some/path ansible
pip3 install --no-index --find-links http:\\remotes\server ansible
원하는 경우 전체 파일 이름을 사용할 수 있습니다.
pip3 install --no-index --find-links /some/path ansible-2.9.4.tar.gz
pip3 install --no-index --find-links http:\\remotes\server ansible-2.9.4.tar.gz
필요한 모든 종속성이 동일한 위치(원래 질문에 나열된 대로)에 있다고 가정하면 정상적으로 설치되어야 합니다(즉, 각 종속성을 수동으로 설치할 필요가 없음).
요구사항
또 다른 옵션은 적절한 종속성 설치 순서로 요구 사항 파일을 만드는 것입니다. 예:
전. 요구사항.txt
/path/to/MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl
/path/to/Jinja2-2.11.1-py2.py3-none-any.whl
/path/to/ansible-2.9.4.tar.gz
# ...
그런 다음 eg를 사용하여 pip3 install -r requirements.txt
나열된 패키지를 설치하십시오. 예를 들어 HTTP 링크를 다시 사용할 수도 있습니다.
전. 요구사항.txt
http:\\remotes\server\MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl
http:\\remotes\server\Jinja2-2.11.1-py2.py3-none-any.whl
http:\\remotes\server\ansible-2.9.4.tar.gz
# ...
여기서 분명한 단점은 한 패키지가 다른 패키지에 종속되어 있다고 가정하면 특정 패키지를 설치해야 하는 순서를 이미 알아야 한다는 것입니다.
기타 URL 옵션
다음을 살펴보는 것도 좋습니다.버전 관리 시스템(VCS) 섹션VCS 링크(예: Git, Mercurial, Subversion 및 Bazaar)와의 pip install
결합 예를 제공하는 문서 입니다 .pip install
참고자료
답변2
당신에게 필요한 것은 전체 거울을 갖는 것이 아니기 때문에 다음을 사용하는 것이 좋습니다.python-pypi-미러:
1- 인터넷에 연결된 서버에 pip를 사용하여 python-pypi-mirror를 설치합니다.
2- 이 서버에 http.server Python 모듈을 설치합니다.
3- pip 패키지를 서버할 디렉터리를 만듭니다.
4- python-pypi-mirror를 사용하여 최근 생성되어 http 서버로 노출된 디렉터리에 필요한 패키지를 다운로드합니다(모든 종속성을 포함합니다).
5- 필요한 패키지를 원격으로 설치합니다.
pip3 install --trusted-host <http_server> -i http://<http_server>:<http.server_default_port>/simple <package_name>