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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.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_Django_Importerror_Pythonpath - Fatal编程技术网

Python 导入与系统模块同名的模块

Python 导入与系统模块同名的模块,python,django,importerror,pythonpath,Python,Django,Importerror,Pythonpath,我的情况和一个类似,不同的是 在我们的python/django项目中,我们有一个名为utils的目录,它保存基本函数 有时,我们需要从控制台运行thm来测试一些模块,比如 python myproject/some_module.py 这一切都很好,直到python尝试从我们的utils目录导入一些东西 from utils.custom_modules import some_function ImportError: No module named custom_modules 我检查

我的情况和一个类似,不同的是

在我们的python/django项目中,我们有一个名为utils的目录,它保存基本函数

有时,我们需要从控制台运行thm来测试一些模块,比如

python myproject/some_module.py
这一切都很好,直到python尝试从我们的utils目录导入一些东西

from utils.custom_modules import some_function
ImportError: No module named custom_modules
我检查我的python路径,我们的项目在列表中,项目文件下的每个文件夹都有
\uuuu init\uuuuu.py
文件,当我在项目目录中运行ipython时。。。一切正常,否则,python将从其自己的utils目录导入

from utils.custom_modules import some_function
ImportError: No module named custom_modules
我的同事使用sama方法没有任何问题,但它会在我的环境中抛出
ImportError
。。。我们所有人都不知道的问题是什么

更新:我的项目目录,每个子目录都有
\uuuu init\uuuuu.py
文件,我可以从我的项目中导入其他模块而不会出现任何问题。。。当我在一个与procekt不同的文件夹中运行ipython时,这样的导入没有问题

from someothermodule.submodule imprort blahblahblah
但是,当涉及到导入UTIL时,它失败了


更新日期2:导致问题的是django文件夹下的utils目录,它也在python路径中

我不想麻烦告诉您尝试并确保您自己的模块不以stdlib模块命名

如果您想保留这样的名称,则必须在导入您自己的utils模块的所有内容中使用这样的名称:

import sys, imp

utils = sys.modules.get('utils')
if not utils: utils = imp.load_module('utils',*imp.find_module('utils/utils'))
但是,除非重命名后有很多内容需要更改,否则我建议您重命名它。

有关语义,请参阅。你可能想要

from .utils.custom_modules import some_function
如果您在包的顶层文件中

编辑:这只能从包内完成。这有一个很好的理由——如果您要导入项目的一部分,那么您已经将其视为Python包,并且您应该将其制作成Python包。您可以通过向项目目录中添加一个
\uuuu init\uuuu.py
文件来完成此操作


编辑2:你完全改变了问题。可以解决此问题,但正确的做法是不要以与内置软件包相同的方式引用您的软件包。您需要重命名
utils
,或者将其作为另一个包的子包,这样您就可以通过一个不冲突的名称来引用它(如mydjangoapp.utils.custom_模块导入某些_函数的
).

您是否尝试从.utils.custom\u模块导入某些函数
ValueError:尝试在非包中进行相对导入
错误…通过向django项目添加空的
\u init\uuuuuuuuuuuuuuupy
,使其成为包。如果您想进行相对导入,那么您已经将其视为一个包,最好将其设为一个。project目录也有一个
\uuuu init\uuuuuuuuuuupy
文件,一个空文件。。。但就我所知,这必须足以让python将其视为python目录。
utils
目录是否有一个
\uuu init\uuu.py
?它也需要是一个子包。每一个模块目录都被用作一个包,需要制作一个。这绝对是错误的做法。这就是相对进口的目的。