3

sys.path は、別のファイルからパッケージをインポートした場合にのみ変更されます。

私のpyenvで:

$(env) python
>>> import sys
>>> print(sys.path)
['', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/var/www/lib/python3.4/site-packages']

fileImport.py(私の仮想環境内)で:

# fileImport.py
import sys
print(sys.path)

コマンド :

$(env) python fileImport.py

同じ良い結果が得られます!

しかし、次のように anotherfile.py から fileImport パッケージをインポートしようとすると:

#!/usr/bin/env python    
# anotherfile.py    
import fileImport

sys.path 結果の変更:

$(env) python anotherfile.py
['/var/www', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']

次のようにpyenvをインストールします:

$ sudo apt-get install python3.4-venv python3-dev
$ pyvenv-3.4 env

ファイルからのインポートで、仮想環境からではなくシステムからの sys.path が使用される理由がわかりません。

よろしくお願いいたします。

4

1 に答える 1

1

シバンを変更することで問題を解決しました。

仮想環境では、次を使用できます。

$(env) /usr/bin/env python

ただし、ファイルでは、シバンは仮想 python の正確な場所を指している必要があります。私の場合 :

#!/var/www/bin/python

それが役立つことを願っています。

于 2016-01-27T13:40:03.960 に答える