Pythonとvirtualenvのような他のパッケージがすでにインストールされている共有Webサーバーで作業している場合。virtualenvを使用して、システム全体のpythonとパッケージを使用しながら、特定のディレクトリに必要な追加のパッケージをインストールできますか、それとも、追加のpythonパッケージを自分のディレクトリにインストールして、sudo権限を必要とせずにWebサイトで使用できますか?
3 に答える
--system-site-packages
スイッチを使用して、グローバルにインストールされたすべてのパッケージをvirtualenvに明示的に含めることができます 。
仮想環境へのグローバルサイトパッケージディレクトリへのアクセスを許可します
--no-site-packages
または、代わりにスイッチを使用してグローバルサイトパッケージを無効にします。
仮想環境へのグローバルサイトパッケージディレクトリへのアクセスを許可しないでください
現在、後者がデフォルトです。
私は個人的lxml
にグローバルサイトパッケージにインストールしたので、それを小さなデモンストレーションとして使用できます。
$ virtualenv nositepackages
New python executable in nositepackages/bin/python
Installing setuptools............done.
Installing pip...c............done.
$ ./nositepackages/bin/python -c 'import lxml; print lxml.__package__'
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named lxml
$ virtualenv --system-site-packages sitepackages
New python executable in sitepackages/bin/python
Installing setuptools............done.
Installing pip...............done.
$ ./sitepackages/bin/python -c 'import lxml; print lxml.__package__'
lxml
また、必要なパッケージを、権限のあるディレクトリにコピーすることもできます。次に、__ init __。pyで、Pythonパスを次のように変更する必要があります。
import sys
sys.path.append("/path/to/the_dir/with_packages")
名前付きの$HOMEにディレクトリをlib
追加します。名前付きのディレクトリにディレクトリを追加しますpython
新しいディレクトリをpath/pythonpath.bashrcおよび.bash_profileに追加します
nano ~/.bashrc
次に追加export PYTHONPATH=$PYTHONPATH:~/lib/python
します。これにより、シェルを介して(たとえば、Webサイトを介して)アクセスされない場合の環境が設定されます。
に同じ行を追加.bash_profile
します。これにより、シェルからログインするときに環境が制御されます。
ターミナルからログアウトして再度ログインする
echo $PYTHONPATH
〜/ lib/pythonフォルダーがあることを確認します
wget https://download
またはを使用して目的のPythonパッケージをダウンロードしますgit clone package/repo
zipをダウンロードした場合は解凍しますtar -xvf somefile.tar.bz
解凍したディレクトリに移動します
cd some_package\
--HOMEタグを指定してsetup.pyを実行します
python setup.py install --HOME=~
試して
python -c "import <package>;print <package>.VERSION;"
カスタムパッケージをインストールしました。おめでとうございます:)
ちなみに、virtualenvの方がはるかに堅牢なソリューションであることがわかりましたが、適切にセットアップするのが難しい場合があります。いくつかのカスタムパッケージのみが必要な場合、これは単なるものです...