什麼是下載python軟件包的最佳方式,以及pypi的依賴關係,以便在另一臺機器上進行離線安裝?有沒有簡單的方法用pip或easy_install來做到這一點?我試圖在未連接到互聯網的FreeBSD盒子上安裝請求庫。Python軟件包離線安裝
回答
如果軟件包位於PYPI上,請將其及其依賴項下載到某個本地目錄。 例如
$ mkdir /pypi && cd /pypi $ ls -la -rw-r--r-- 1 pavel staff 237954 Apr 19 11:31 Flask-WTF-0.6.tar.gz -rw-r--r-- 1 pavel staff 389741 Feb 22 17:10 Jinja2-2.6.tar.gz -rw-r--r-- 1 pavel staff 70305 Apr 11 00:28 MySQL-python-1.2.3.tar.gz -rw-r--r-- 1 pavel staff 2597214 Apr 10 18:26 SQLAlchemy-0.7.6.tar.gz -rw-r--r-- 1 pavel staff 1108056 Feb 22 17:10 Werkzeug-0.8.2.tar.gz -rw-r--r-- 1 pavel staff 488207 Apr 10 18:26 boto-2.3.0.tar.gz -rw-r--r-- 1 pavel staff 490192 Apr 16 12:00 flask-0.9-dev-2a6c80a.tar.gz
某些軟件包可能需要手動歸檔到類似的外觀tarball中。當我想要更新的(不太穩定的)版本的東西時,我會做很多事情。一些軟件包不在PYPI上,所以它們也是如此。
假設您在~/src/myapp
中有正確形成的Python應用程序。 ~/src/myapp/setup.py
將有install_requires
列表,其中提到了您在/pypi
目錄中的一件或多件事情。像這樣:
install_requires=[
'boto',
'Flask',
'Werkzeug',
# and so on
如果你希望能夠與所有必要的依賴運行你的應用程序,同時它還是黑客攻擊,你會做這樣的事情:
$ cd ~/src/myapp $ python setup.py develop --always-unzip --allow-hosts=None --find-links=/pypi
這樣,你的應用程序將直接從你的源代碼目錄執行。你可以破解東西,然後重新運行應用程序而不重建任何東西。
如果你想安裝你的應用和它的依賴到當前Python環境,你會做這樣的事情:
$ cd ~/src/myapp $ easy_install --always-unzip --allow-hosts=None --find-links=/pypi .
在這兩種情況下,如果一個或多個依賴AREN」的構建就會失敗t目前在/pypi
目錄中。它不會試圖從互聯網混雜安裝丟失的東西。
我強烈建議在有效的virtual environment之內調用setup.py develop ...
和easy_install ...
以避免污染您的全局Python環境。這是(virtualenv),相當多的路要走。切勿在全球Python環境中安裝任何東西。
如果您構建應用程序的計算機與您要部署它的計算機具有相同的體系結構,則可以簡單地對整個虛擬環境目錄進行壓縮,將其全部放入其中。就在tarballing之前,您必須使虛擬環境目錄可重新定位(請參閱--relocatable選項)。 注意:目標機器需要安裝相同版本的Python,並且您的應用程序可能具有的任何基於C的依賴關係也必須預先安裝(例如,如果您依賴於PIL,那麼libpng,libjpeg等必須是預裝)。
而不是'--allow-hosts = None'您可以使用開關'--no-index' – romor
請您詳細說明如何創建一個正確形成的Python應用程序? –
@PrabhjotRai請參閱https://packaging.python.org/distributing/ –
我使用-d
(或--download
)選項到pip install
,這使得從PyPI下載sdist tarball的過程變得更加簡單。例如,pip install --download /path/to/some/dir celery
會將芹菜及其所有依賴項的sdist tarball下載到/path/to/some/dir
(但不會安裝它們)。然後,您可以使用pip install --no-index --find-links /path/to/some/dir/ celery
使用下載的sdist安裝芹菜,而無需訪問網絡。如果您在這兩個命令與-r requirements.txt
,其中requirements.txt是一個點要求文件列出所有你需要的軟件包取代celery
(也可以選擇你想要的版本)
的同樣的過程。
UPDATE
棄用:PIP安裝 - 表格下載已被棄用,並將於 在未來刪除。 PIP現在有一個download命令,應該使用 。
的命令是這樣的:
pip download -r requirements.txt
對於python3:
pip3 download -r requirements.txt
畫中畫8.1.2,您可以使用pip download -r requ.txt
將包下載到本地計算機。
脫機python。這樣做的我使用的virtualenv(隔離Python環境)
1)安裝的virtualenv 在線與PIP:
pip install virtualenv --user
或脫機WHL:去這個link,下載最新版本(.whl或焦油。 GZ)並安裝使用下面的命令:使用--user
pip install virtualenv-15.1.0-py2.py3-none-any.whl --user
你不需要使用sudo pip…
。
2)使用在線機器上的virtualenv
選擇與終端cd
一個目錄,並運行此代碼:
python -m virtualenv myenv
cd myenv
source bin/activate
pip install Flask
安裝所有的包後,你必須生成一個requirements.txt
所以當你的virtualenv是激活,寫入
pip freeze > requirements.txt
打開一個新的終端並創建另一個env,如myenv2
。
python -m virtualenv myenv2
cd myenv2
source bin/activate
cd -
ls
現在你可以去那裏你requirements.txt
和tranferred_packages
夾在那裏,你的脫機文件夾。用下面的代碼下載軟件包,並把它們全部放到tranferred_packages
文件夾中。
pip download -r requirements.txt
把你的脫機文件夾脫機計算機,然後
python -m virtualenv myenv2
cd myenv2
source bin/activate
cd -
cd offline
pip install --no-index --find-links="./tranferred_packages" -r requirements.txt
什麼是在文件夾脫機[requirements.txt,tranferred_packages {燒瓶0.10.1.tar.gz,...}你的包
pip list
注意]
檢查表:因爲我們是在2017年,最好是使用Python 3喲你可以用這個命令創建python 3 virtualenv。
virtualenv -p python3 envname
使用wheel
編譯包。
束起來:
$ tempdir=$(mktemp -d /tmp/wheelhouse-XXXXX)
$ pip wheel -r requirements.txt --wheel-dir=$tempdir
$ cwd=`pwd`
$ (cd "$tempdir"; tar -cjvf "$cwd/bundled.tar.bz2" *)
副本壓縮包並安裝:
$ tempdir=$(mktemp -d /tmp/wheelhouse-XXXXX)
$ (cd $tempdir; tar -xvf /path/to/bundled.tar.bz2)
$ pip install --force-reinstall --ignore-installed --upgrade --no-index --no-deps $tempdir/*
注wheel
二進制包不能跨機器。
更多文獻這裏:https://pip.pypa.io/en/stable/user_guide/#installation-bundles
我在使用Python 3.6綁定到機器上時遇到了問題,而在使用Python 3.5解壓時出現了問題:「_
- 1. python Beautifulsoup4軟件包安裝
- 2. Python安裝軟件包
- 3. 安裝python軟件包
- 4. 如何使用ubuntu 14.04.3離線安裝軟件包kickstart
- 5. 在離線計算機上安裝Django及相關軟件包
- 6. 如何爲離線安裝創建debian軟件包?
- 7. 虛擬指南離線安裝NPM軟件包Windows
- 8. 在離線ArchLinux系統上安裝軟件包
- 9. 如何在離線服務器上安裝H2O R軟件包?
- 10. 如何在離線時安裝npm軟件包?
- 11. 如何在.Net Core項目中離線安裝nuget軟件包?
- 12. 離線的NuGet軟件包
- 13. 無法安裝python軟件包表
- 14. 在OpenShift上安裝python軟件包
- 15. 無法安裝Python軟件包
- 16. OSX:安裝python軟件包時出錯
- 17. 安裝和導入python軟件包
- 18. R,Python:在rpy2上安裝軟件包
- 19. Python:安裝一些軟件包
- 20. Python pip - 爲軟件包安裝文檔?
- 21. 在Python中安裝軟件包
- 22. python自動安裝軟件包
- 23. Pip只安裝純python軟件包
- 24. 爲python安裝igraph軟件包
- 25. 將python軟件包安裝到sys.path
- 26. 軟件包阻止conda安裝 - python
- 27. 安裝Python的ahkab軟件包
- 28. IBM_DB軟件包安裝Python 3.4
- 29. 無法安裝Python-docx軟件包
- 30. 在anaconda中安裝python軟件包
相關:[如何根據requirements.txt從本地目錄安裝軟件包?](http://stackoverflow.com/q/7225900/95735) –