Python包导入问题

2024-09-27 09:28:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在努力实现Python包导入。我在网上搜索,但找不到合适的答案。在

我有以下目录结构:

.
./__init__.py
./packages/
./packages/__init__.py
./packages/package
./packages/package/__init__.py
./packages/package/module.py

在模块.py源仅包含一行:

^{pr2}$

如果我转到“packages”目录,我可以导入包:

>>> import python
>>>

如果转到“.”目录,我希望按如下方式导入模块(或包):

>>> import packages.package.module as module

但我得到了一个错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "vendor/package/module.py", line 1, in <module>
    import package
ImportError: No module named package

我需要在u init_uuy.py文件中放入什么,以便可以进行上述导入? 另外,我还需要在./\uu init_uuy.py文件中放入什么,以便能够从../目录导入我的项目?

如果可能的话,我想在不改变系统路径变量。在


Tags: 模块文件答案inpyimport目录package
2条回答

为了使import package在模块.py要成功,python包package必须是可发现的。这意味着它必须在PYTHONPATH上。默认情况下,此路径包括site-packages(python包与easy_installpip放在一起的目录)。此外,PYTHONPATH还包括当前的工作目录。

如果您在.,那么{}将被放在PYTHONPATH的开头。该目录不包含名为package的python包,因此import package失败。

您可以在启动python解释器之前移动到./packages,也可以安装包。要完成后者,您需要一个设置.py

从运行程序时。所有导入都必须与该目录相关。为了你模块.py这意味着你必须

import packages.package

而不是

^{pr2}$

这是因为python将使用。作为您在程序中执行的所有导入的基础。如果没有很多魔法,就不可能从父目录中导入某些内容,因此您必须执行如上所示的绝对导入。

相关问题 更多 >

    热门问题