Python从相对路径导入

Python从相对路径导入,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,在Python 2.7上,我有以下内容: dir1/dir2/File1.py dir1/dir3/File2.py File2.py要导入File1.py 什么是非黑客,蟒蛇,标准的方式做这件事 dir1、dir2和dir3包含\uuuu init\uuuu.py touch dir1{,/dir2}/__init__.py 很可能 touch dir1{,/dir3}/__init__.py 然后,在File2.py中: from dir1.dir2 import File2 fra

在Python 2.7上,我有以下内容:

dir1/dir2/File1.py
dir1/dir3/File2.py
File2.py
要导入
File1.py

什么是非黑客,蟒蛇,标准的方式做这件事

dir1、dir2和dir3包含
\uuuu init\uuuu.py

touch dir1{,/dir2}/__init__.py
很可能

touch dir1{,/dir3}/__init__.py
然后,在
File2.py
中:

from dir1.dir2 import File2

fram = File2.Framistan(12)
setup.py
的奖励积分包括:

from setuptools import setup, find_packages

setup( 
    ...
    packages=find_packages(),
    ...
 )
把他们绑在一起

要让任意
FileX.py
查看其他包,您需要在您的环境中设置
PYTHONPATH
。但是,要获得一种惯用的方法,只需使用上面提到的
setup()
。这将代表您将创建的包放入搜索路径

很可能

touch dir1{,/dir3}/__init__.py
然后,在
File2.py
中:

from dir1.dir2 import File2

fram = File2.Framistan(12)
setup.py
的奖励积分包括:

from setuptools import setup, find_packages

setup( 
    ...
    packages=find_packages(),
    ...
 )
把他们绑在一起

要让任意
FileX.py
查看其他包,您需要在您的环境中设置
PYTHONPATH
。但是,要获得一种惯用的方法,只需使用上面提到的
setup()
。这将代表您将创建的包放入搜索路径。

使用相对导入:

from ..dir2 import File1

File1.hello()
有关更多信息,请阅读

Python程序员似乎确实偏爱绝对导入;该示例由具有相对导入的。

给出:

from ..dir2 import File1

File1.hello()
有关更多信息,请阅读


Python程序员似乎确实偏爱绝对导入;例如,

dir1
dir2
还是
dir3
模块?非黑客是将
dir1
dir1.dir2
放入包中。或者,将
dir1/dir2
添加到
PYTHONPATH
sys.path.insert(0,'dir1/dir2'))
仍在寻找有效的答案。是
dir1
dir2
还是
dir3
模块?非黑客是将
dir1
dir1.dir2
放入包中。或者,将
dir1/dir2
添加到
PYTHONPATH
sys.path.insert(0,'dir1/dir2'))
仍在寻找有效的答案。Brian,我不明白
setup.py
与相对导入的问题有什么关系。dir3$python File2.py回溯(最后一次调用):文件“File2.py”,第1行,from dir1.dir2 import File1 importorror:没有名为dir1.dir2Brian的模块,我不明白
setup.py
与相对导入有关的问题有什么关系。dir3$python File2.py回溯(上次调用):文件“File2.py”,第1行,from dir1.dir2 import File1 ImportError:没有名为dir1.dir2的模块