python导入相关模块

python导入相关模块,python,python-import,relative-path,python-module,Python,Python Import,Relative Path,Python Module,我在同一个目录中有Python模块a.py和b.py。 鉴于a.py可能已从另一个目录导入或直接执行,如何从a.py可靠地导入b.py?这个模块是分布式的,所以我不能硬编码一条路径 我一直在玩\uuuuu file\uuuu、sys.path和os.chdir,但感觉很乱。而且,\uuuuuuuuuuuuuuuuuuuu并不总是可用。实际上,\uuuuuuuuuuuuu文件可用于导入的模块,但仅当它是从.py/.pyc文件导入时才可用。如果模块内置,它将不可用。例如: >>>

我在同一个目录中有Python模块a.py和b.py。 鉴于a.py可能已从另一个目录导入或直接执行,如何从a.py可靠地导入b.py?这个模块是分布式的,所以我不能硬编码一条路径


我一直在玩
\uuuuu file\uuuu
、sys.path和os.chdir,但感觉很乱。而且,
\uuuuuuuuuuuuuuuuuuuu
并不总是可用。

实际上,
\uuuuuuuuuuuuu文件
可用于导入的模块,但仅当它是从.py/.pyc文件导入时才可用。如果模块内置,它将不可用。例如:

>>> import sys, os
>>> hasattr(os, '__file__')
True
>>> hasattr(sys, '__file__')
False

实际上,
\uuuuuu文件\uuuuuu
可用于导入的模块,但前提是它是从.py/.pyc文件导入的。如果模块内置,它将不可用。例如:

>>> import sys, os
>>> hasattr(os, '__file__')
True
>>> hasattr(sys, '__file__')
False
使用模块将使内置模块更加明显:

>>> import os
>>> import sys
>>> inspect.getfile(os)
'/usr/local/lib/python2.6/os.pyc'
>>> inspect.getfile(sys)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.6/inspect.py", line 407, in getfile
    raise TypeError('arg is a built-in module')
TypeError: arg is a built-in module
导入操作系统 >>>导入系统 >>>inspect.getfile(操作系统) “/usr/local/lib/python2.6/os.pyc” >>>inspect.getfile(sys) 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 文件“/usr/local/lib/python2.6/inspect.py”,第407行,在getfile中 raise TypeError('arg是内置模块') TypeError:arg是一个内置模块 使用模块将使内置模块更加明显:

>>> import os
>>> import sys
>>> inspect.getfile(os)
'/usr/local/lib/python2.6/os.pyc'
>>> inspect.getfile(sys)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.6/inspect.py", line 407, in getfile
    raise TypeError('arg is a built-in module')
TypeError: arg is a built-in module
导入操作系统 >>>导入系统 >>>inspect.getfile(操作系统) “/usr/local/lib/python2.6/os.pyc” >>>inspect.getfile(sys) 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 文件“/usr/local/lib/python2.6/inspect.py”,第407行,在getfile中 raise TypeError('arg是内置模块') TypeError:arg是一个内置模块
将包含这两者的目录放在python路径中。。。反之亦然。

将包含这两者的目录放在python路径中。。。反之亦然