1

I have miniconda installed and running various versions of python in different environments. I've created a temperature.py file and saved it in a folder called python in my root directory: /Users/name

When I type python on the terminal and then run import temperature.py from the terminal I get this error:

ImportError: No module named 'temperature'

Where should I have saved the temperature.py file?

4

3 に答える 3

1

temperature.py現在の作業ディレクトリにコピー/移動します。

このディレクトリは、Python プロンプトから見つけることができます。

>>> import os
>>> os.getcwd()
于 2016-12-17T18:34:22.827 に答える
1

Python がインポートするモジュールを最初に探す場所は、作業ディレクトリ (つまり、スクリプトを python に渡した場合のディレクトリ)、またはスクリプトなしで python を起動した場合は、python を開いたときのディレクトリです。そこで見つからない場合は PYTHONPATH 変数を使用し、そこにも見つからない場合は、Python のインストールで指定されたパスを使用します。

実行時に、sys.path で調べている実際のパスを確認できます。

import sys
print(sys.path)

また、必要に応じて変更することもできsys.pathます。インポートが最初に表示される場所であるため、先頭に追加します。

import sys
sys.path.insert(0, <path_of_temperature.py>)

ソースhttps://docs.python.org/3/tutorial/modules.html

6.1.2. モジュール検索パス

spam という名前のモジュールがインポートされると、インタープリターは最初にその名前の組み込みモジュールを検索します。見つからない場合は、変数 sys.path で指定されたディレクトリのリストで spam.py という名前のファイルを検索します。sys.path は次の場所から初期化されます。

  1. 入力スクリプトを含むディレクトリ (ファイルが指定されていない場合は現在のディレクトリ)。
  2. PYTHONPATH (シェル変数 PATH と同じ構文のディレクトリ名のリスト)。
  3. インストールに依存するデフォルト。
于 2016-12-17T18:44:01.467 に答える
0

ファイルはtemperature.pyPython で検索できる必要があります。Python は以下のインポート可能なパッケージを探しますsys.path:

>>> import sys
>>> print(sys.path)
['', ...]

次のいずれかを実行できます。

temperature.py(1)オンになっているディレクトリにファイルを追加しますsys.path(最初の項目は空の文字列であるため、現在の作業ディレクトリは常に機能します)。

(2)ディレクトリを動的に追加します(先頭に追加するのが通例です)

  import sys
  sys.path.insert(0, path-to-directory-containing-temperature.py)

PYTHONPATH(3) ディレクトリを環境変数に追加します。

(4) パッケージを作成してインストールします (作業中の場合は開発モードで):

(dev) go|c:\srv\tmp\temp> cat temperature.py
def get_temp():
    print 42

非常に最小限の setup.py ファイルを追加します。

(dev) go|c:\srv\tmp\temp> cat setup.py
from setuptools import setup
setup(
    name='temp',
    py_modules=['temperature']
)   

開発モードでインストール

c:\srv\tmp\temp> python setup.py develop
running develop
running egg_info
...
Creating c:\python27\lib\site-packages\temp.egg-link (link to .)
Adding temp 0.0.0 to easy-install.pth file

Installed c:\srv\tmp\temp
Processing dependencies for temp==0.0.0
Finished processing dependencies for temp==0.0.0

どこからでもインポートできるようになりました (まったく別のディレクトリから開始していることに注意してください)。

c:\> python
Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec  5 2015, 20:32:19) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import temperature
>>> temperature.get_temp()
42

始めたばかりのときは(1)か(3)を選びますが、しばらくすると(4)がベストな選択肢になります。

于 2016-12-17T18:40:27.147 に答える