[解決済み】オフラインでパッケージをインストールする方法は?
質問
オフラインで別のマシンにインストールするために、pypiからpythonパッケージとその依存関係をダウンロードする最良の方法は何ですか?pipやeasy_installでこれを行う簡単な方法はありますか?私はインターネットに接続されていないFreeBSDマシンにリクエストライブラリをインストールしようとしています。
解決方法は?
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にないパッケージもあるので、それらにも同じことが言えます。
きちんとしたPythonのアプリケーションが
~/src/myapp
.
~/src/myapp/setup.py
を持つことになります。
install_requires
の中にある1つ以上のものに言及したリストです。
/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 .
どちらの場合も、1つ以上の依存関係が
/pypi
ディレクトリに格納されます。インターネットから足りないものを無差別にインストールしようとはしません。
を起動することを強くお勧めします。
setup.py develop ...
と
easy_install ...
アクティブな
仮想環境
を使用して、グローバルな Python 環境を汚染しないようにします。これは(virtualenvは)ほとんど行くべき道です。グローバルなPython環境には何もインストールしないようにしましょう。
アプリを構築したマシンとデプロイしたいマシンが同じアーキテクチャであれば、仮想環境ディレクトリ全体をtarballして、そこに
easy_install
-をすべて追加しました。しかし、tarballする前に、仮想環境ディレクトリをリロケータブルにする必要があります (
--リロケータブル
オプション)。
NOTE
は、インストール先のマシンに同じバージョンの Python がインストールされている必要があり、また、アプリが持つかもしれない C ベースの依存関係もそこにプリインストールされている必要があります(例えば、あなたが
ピル
libpng、libjpegなどがプリインストールされている必要があります)。
関連
-
PyQt5はユーザーログインGUIインターフェースとログイン後のジャンプを実装しています。
-
パッケージングツールPyinstallerの使用と落とし穴の回避
-
[解決済み】「SyntaxError.Syntax」は何ですか?Missing parentheses in call to 'print'」はPythonでどういう意味ですか?
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] Windowsにpipをインストールするにはどうしたらいいですか?
-
[解決済み] pipでPythonの全パッケージをアップグレードする方法
-
[解決済み] ローカルディレクトリからrequirements.txtファイルに従ってpipを使用してパッケージをインストールするにはどうすればよいですか?
-
[解決済み] Pythonとpip、利用可能なパッケージのすべてのバージョンをリストアップ?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
pythonを使ったオフィス自動化コード例
-
Python 可視化 big_screen ライブラリ サンプル 詳細
-
風力制御におけるKS原理を深く理解するためのpythonアルゴリズム
-
Pythonショートビデオクローラーチュートリアル
-
Python LeNetネットワークの説明とpytorchでの実装
-
FacebookオープンソースワンストップサービスpythonのタイミングツールKats詳細
-
[解決済み】TypeErrorの修正方法。Unicodeオブジェクトは、ハッシュ化する前にエンコードする必要がある?
-
[解決済み] データ型が理解できない
-
[解決済み】TypeError: re.findall()でバイトのようなオブジェクトに文字列パターンを使用することはできません。)
-
[解決済み】 TypeError: += でサポートされていないオペランド型: 'int' および 'list' です。