1

我安装了 miniconda 并在不同的环境中运行各种版本的 python。我创建了一个temperature.py文件并将其保存在我的根目录中名为 python 的文件夹中:/Users/name

当我在终端上键入python然后从终端运行import temperature.py时,我收到此错误:

ImportError:没有名为“温度”的模块

我应该在哪里保存 temperature.py 文件?

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 将首先出现的地方:

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(目录名称列表,与 shell 变量 PATH 具有相同的语法)。
  3. 安装相关的默认值。
于 2016-12-17T18:44:01.467 回答
0

temperature.py文件需要能够被 Python 找到。Python 在以下位置寻找可导入的包sys.path

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

您可以:

(1) 将temperature.py文件添加到打开的目录sys.path(第一项是空字符串,因此您当前的工作目录将始终有效)。

(2)动态添加目录(习惯在最前面添加)

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

(3) 将目录添加到PYTHONPATH环境变量中。

(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 回答