自分自身でコンパイルしたvirtualenvとpythonでvirtualenv
を作成するタスクを解決する便利なbashスクリプトを書きました。必要に応じてネイティブライブラリをシステムレベルにインストールしただけの多機能なvirtualenvを作成することを目指していますが、すべてのpythonパッケージとvirtualenvとpipなどをvirtualenv内にインストールします。Pythonはパッケージを見つけられません
スクリプトはhereです。次のように
私はスクリプトを呼び出す:
のpythonとvirtualenvのをコンパイルするために必要なパッケージがシステムにインストールされているが与えられself_contained_venv.sh \
-n udacity_model_building_and_validation \
-p https://www.python.org/ftp/python/3.4.4/Python-3.4.4.tar.xz \
-v https://pypi.python.org/packages/c8/82/7c1eb879dea5725fae239070b48187de74a8eb06b63d9087cd0a60436353/virtualenv-15.0.1.tar.gz#md5=28d76a0d9cbd5dc42046dd14e76a6ecc \
-d pandas scikit-learn seaborn
を、スクリプトが素敵virtualenvのを作成します。しかし、virtualenv内からインストールされたモジュール/パッケージにアクセスしようとすると、pythonはそれらを見つけることができません。これを実証するために、私は、コマンドと、ここでのコードのいくつかの出力出してあげる:もちろん、すべての
まず私はvirtualenvのをアクティブにする必要があります。
. bin/activate
出力:なしは、問題なく動作します。
それから私はPYTHONPATHパイソンを印刷するには、認識している:
import sys
for i in sys.path:
print(i)
出力:これまでのところ
/home/xiaolong/development/Python/udacity_model_building_and_validation/lib/python34.zip
/home/xiaolong/development/Python/udacity_model_building_and_validation/lib/python3.4
/home/xiaolong/development/Python/udacity_model_building_and_validation/lib/python3.4/plat-linux
/home/xiaolong/development/Python/udacity_model_building_and_validation/lib/python3.4/lib-dynload
/home/xiaolong/development/Python/udacity_model_building_and_validation/localpython/lib/python3.4
/home/xiaolong/development/Python/udacity_model_building_and_validation/localpython/lib/python3.4/plat-linux
/home/xiaolong/development/Python/udacity_model_building_and_validation/lib/python3.4/site-packages
とても良いです。それから私は私のbashスクリプトの使用時に、私はインストールモジュール/パッケージをインポートしよう:pandas
:
python
(IDLEが実行されている)
import pandas as pd
出力:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'pandas'
別の試み:
import numpy as np
出力:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'numpy'
えっ?だから、利用可能なパッケージはありませんか?
which pip
出力:もう一度チェックピップをすることができます
alias pip='localpython/bin/pip3.4'
./localpython/bin/pip3.4
[OK]を、ので、それは私の地元のピップを使用しています。
チェックパッケージ:
pip list
出力:
numpy (1.11.0)
pandas (0.18.1)
pip (8.1.2)
psutil (4.1.0)
Python-contrib-nbextensions (alpha)
python-dateutil (2.5.3)
pytz (2016.4)
PyYAML (3.11)
setuptools (18.2)
six (1.10.0)
virtualenv (15.0.1)
フムのパッケージがありますが、なぜそれらを見つけることができませんPythonの?これらのパッケージが置かれている場所のは、単に1を削除しようとすることで、見てみましょう:
pip uninstall pandas
出力(それは多くのページを埋めるため、短縮):
Uninstalling pandas-0.18.1:
/home/xiaolong/development/Python/udacity_model_building_and_validation/localpython/lib/python3.4/site-packages/pandas-0.18.1-py3.4.egg-info
/home/xiaolong/development/Python/udacity_model_building_and_validation/localpython/lib/python3.4/site-packages/pandas/__init__.py
/home/xiaolong/development/Python/udacity_model_building_and_validation/localpython/lib/python3.4/site-packages/pandas/__pycache__/__init__.cpython-34.pyc
/home/xiaolong/development/Python/udacity_model_building_and_validation/localpython/lib/python3.4/site-packages/pandas/__pycache__/_version.cpython-34.pyc
/home/xiaolong/development/Python/udacity_model_building_and_validation/localpython/lib/python3.4/site-packages/pandas/__pycache__/info.cpython-34.pyc
なるほど、パッケージはあるので、パスで。
Pythonが適切な場所に見えるかどうかを見つけることに別の試み:
>>> from distutils.sysconfig import get_python_lib
>>> print(get_python_lib())
/home/xiaolong/development/Python/udacity_model_building_and_validation/lib/python3.4/site-packages
ので、この1つは私が正しく理解すれば、それは、正しい場所に見えないことを示します。
注:スクリプトは明白ではないかもしれない次の事、ありません
:接頭辞で
- コンパイルパイソンを(ローカルのpython)地元のpython ため
- コンパイルvirtualenvの
- それは、インストールされたPythonのバージョンのローカルピップへのエイリアスpip
- 別名virtualenvにローカルに1
- 利用できる新しいバージョン
がある場合
さらに注記:
- 私はスクリプトを実行する
su
またはsudo
を使用していませんでした。 - 私のOSはFedora 22ですが、この場合、主要なディストリビューションは同じように動作すると思います。
- OSが最近更新されました。
質問:なぜ、Pythonで/独自のパッケージを見つけることができないのですか? (何を変更する必要がありますか?)
なぜソースからPythonをコンパイルしていますか?なぜfedoraパッケージを使用しないのですか? – hd1
@ hd1これは、自己完結型のvirtualenvであると考えられています。私は自分のシステムとアナコンドのディストリビューションにpythonを持っていますが、それはこのスクリプトの要点ではありません。 virtualenvはシステムパッケージに依存しない独自のPythonインタプリタ、独自パッケージなどを持ちます。これについての情報を質問に追加します。 – Zelphir
pipからの最初の行アンインストール出力: '/ home/xiaolong/development/Python/udacity_model_building_and_validation/localpython/lib/python3.4/site-packages/s'はあなたのsys.pathのsite-packagesディレクトリにありませんsys.pathは 'localpython'ディレクトリにない'/home/xiaolong/development/Python/udacity_model_building_and_validation/lib/python3.4/site-packages'です – MacHala