2017-04-17 20 views
1

私は管理者権限なしでインストールされたウィンドウでpython36を使用しています。私は簡単なスクリプトを作成python36._pthが認識されません

、コマンドライン上のtester.py

import petl as etl 
fnar = [['foo','bar'], 
     ['weebl','woobl']] 
print(etl.fromcolumns(fnar).lookall()) 

は、私はディレクトリにPETLをインストールします。

pip install petl -t lib

そして、私がチェックしたときに、それはそこにあります。

2017-04-17 06:27 PM <DIR>   petl 
2017-04-17 06:27 PM <DIR>   petl-1.1.1.dist-info 

このディレクトリを使用して私のpetlを探したいので、python36._pth fileを作成します。

. 
lib 
import site 

私のスクリプトを実行しようとすると、それを見つけることができません!

>py tester.py 
Traceback (most recent call last): 
    File "tester.py", line 2, in <module> 
    import petl as etl 
ModuleNotFoundError: No module named 'petl' 

._pthファイルが正常に動作することについて私が誤解していることは何ですか?彼らはpython -m siteで示される標準的な場所の一つ、現在の作業ディレクトリ以外に配置されている場合

+0

あなたの '._pth'ファイルはどこですか?あなたのスクリプトはどこですか?実際のPython実行ファイルとPython dllの名前は何ですか?どこに住んでいますか? –

+0

なぜ通常の.pthファイルや 'PYTHONPATH'の代わりにPythonを埋め込むための' ._pth'ファイルを使用していますか? – eryksun

+0

Python 'sys.path'全体をオーバーライドする' .pth'を作成しています。代わりに、['site.py' documentation](https://docs.python.org/3/library/site.html#module-site)に記載されているように作成する必要があります。 – martineau

答えて

0

残念ながら、.pthファイルのみが評価されます。私は詳細を覚えていませんが、Pythonはこれらの標準的な場所を最初に実行し、そこに見つかった.pthファイルを実行してから''(現在の作業ディレクトリ)をsys.pathの先頭に追加します。つまり、スクリプトを起動するディレクトリに.pthファイルを追加するだけでパスを拡張することはできません。

相対パスをシステムパスに追加する唯一の方法は、importステートメントの前にメインスクリプトの先頭に設定することです。この場合、あなたはsys.path.append(os.path.join(os.path.dirname(__file__), 'lib'))のようなものでそれを行うことができます。

関連する問題