Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python导入特定文件_Python_Import - Fatal编程技术网

python导入特定文件

python导入特定文件,python,import,Python,Import,正在尝试导入名为environment.py的特定文件 问题是我在不止一个位置有这个文件 我加载所有文件变量(每个文件中有20多个变量)的方式是: 从环境导入* 问题是,我有两个目录中的environment.py,我的sys.path包含这两个目录。python从列表中的第一个位置加载文件 尝试 但是我的变量被加载到foo中,而不是直接加载 你知道如何强制从正确的位置导入*吗?把它放在一个模块中 /module __init__.py environment.py 这样你就可

正在尝试导入名为
environment.py的特定文件
问题是我在不止一个位置有这个文件
我加载所有文件变量(每个文件中有20多个变量)的方式是:

从环境导入*

问题是,我有两个目录中的
environment.py
,我的
sys.path
包含这两个目录。python从列表中的第一个位置加载文件

尝试

但是我的变量被加载到
foo
中,而不是直接加载

你知道如何强制
从正确的位置导入*
吗?

把它放在一个模块中

/module
    __init__.py
    environment.py
这样你就可以打电话了

from module.environment import *

而且,在两个模块中使用
environment.py
应该没有问题,唯一的区别是导入调用。这就是你的意思吗?

如果你想继续你开始的工作,并且这是在全局范围内,你可以在结尾添加以下内容:

for varName in dir(foo):
    globals()[varName] = getattr(foo, varName)
现在,在
environment.py
中定义的所有变量都在您的全局命名空间中

尽管按照Tom Karzes的建议去做可能更容易:

import os, sys
sys.path.insert(0, path)
from environment import *

# Optional. Probably harmless to leave it in your path.
del sys.path[0]

在导入之前,您可以修改
sys.path
以首先放置所需的目录。这只是不使用
import*
的另一个原因。第一个解决方案有效,但第二个解决方案只是导入了错误的
环境
文件。我还尝试了
sys.path.append(path)
import os, sys
sys.path.insert(0, path)
from environment import *

# Optional. Probably harmless to leave it in your path.
del sys.path[0]