0

Pythonpath を設定してモジュールをインポートする方法を探しています。pythonが見ているパスを確認するには:

import sys
print "modules will be searched in the following paths:"
for path in sys.path:
    print path
print "python version: " + sys.version

PYTHONPATH 環境変数 (windows gui) にいくつかの追加パスを追加しましたが、上記のコードを apache (ブラウザー内) で cgi ファイルとして実行すると、追加したパスが表示されません...(実際、読み込まれません)不足しているパスからのモジュール) Python でコードをローカルで実行すると、すべてのパスが表示されます (それで問題ありません)。

#!C:\tools\programming\Python27\python.exe
import cgi
import cgitb
cgitb.enable()
print "Content-type: text/html" 
print
import sys

#import timeOperations

for path in sys.path:
    print path + "<br>"

print "python version: " + sys.version
print "<html>"
print "<center>Lode doet het weer!</center>"
print "</html>"

コンピューターを再起動しましたが、成功しませんでした。インストールされている python バージョンも 1 つだけです。

PYTHONPATH に別の値を与えるのはなぜですか? 知らない。どんな助けでも大歓迎です!

ロード

4

2 に答える 2

1

私は個人的に、まさにこの理由から、環境変数を介して PYTHONPATH に何かを追加するのは好きではありません。その理由は、PYTHONPATH 環境変数のスコープが、Apache が使用しているものとは異なるためだと思われます。たとえば、Apache はシステム環境変数のみで実行されますが、変数はユーザーに対してローカルである可能性があります。

「.pth」ファイルをサイトパッケージディレクトリに追加して、環境変数を完全にバイパスする方が信頼性が高いと思います。Python インタープリターから次のコードを実行します。

import distutils.sysconfig
print distutils.sysconfig.get_python_lib()

これにより、「site-packages」ディレクトリの場所が出力されます。(コマンドラインまたは Windows エクスプローラーから) そのディレクトリにアクセスし、その中に「MyPythonPath.pth」(または拡張子「.pth」の何か) という名前のファイルを作成します。その中に、PYTHONPATH に追加したい各値を別々の行に含めます。

C:\Path\to\first\directory
C:\Path\to\second\directory

次に Python を実行すると、常に同じ Python インタープリターを使用している限り、どこで実行しても、これらのフォルダーがパスに追加されます。

于 2012-02-09T14:41:30.087 に答える
0

環境変数はユーザー固有のものです。Apache があなたと同じユーザーとして実行されているとは思えません。サービス コンソールを使用して、Apache ユーザー専用に追加する必要があります。

于 2012-02-09T14:41:16.260 に答える