如何在python中导入文件?

Posted

技术标签:

【中文标题】如何在python中导入文件?【英文标题】:How to import a file in python? 【发布时间】:2021-11-15 04:58:11 【问题描述】:

如何从资源/用户访问模型/usrs

├───models
|   └───user.py
├───resources
|   └───user.py

首先我像这样导入它:

from code.models.user import UserModel

但是我得到了一个编译时错误:

`Cannot find reference 'models' in 'code.py'`

我尝试了另一种方法:

from ..models.user import UserModel

但我遇到了运行时错误:

ImportError: attempted relative import beyond top-level package

我在两个文件中都添加了 init.py,但仍然不起作用。

我也尝试了这些解决方案,但它们不能解决我的问题,请帮助我

【问题讨论】:

您可能需要模型和资源文件夹中的__init__.py 文件。 这能回答你的问题吗? Importing files from different folder 我更新了答案 【参考方案1】:

将模型和资源目录添加到您的 $PYTHONPATH 或使用 sys.path:

export PYTHONPATH=$PYTHONPATH:/path/you/want/to/add

或者:

import sys
sys.path.insert(0, "/home/project-name/models")

或者将“__ init__.py”添加到代码目录:

from code.models import user

【讨论】:

谢谢@Little Bamboo,第一)我不尝试第一个第二)import sys sys.path.insert(0, "D:\Projects\Python\UdemyProjects\SixSimplifying\code\models") import user我得到这个错误:SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 18-21: truncated \UXXXXXXXX escape第三)我得到这个错误:Cannot find reference 'models' in 'code.py' 你能给更详细的建议? 这是因为您使用的字符串将反斜杠视为转义字符。我相信您可以在路径之前添加字母“r”。如 sys.path.insert(0, r"D:\Projects\Python\UdemyProjects\SixSimplifying\code\models") 您也可以将所有反斜杠更改为正斜杠。 我添加了这样一个import sys sys.path.insert(0, r"D:/Projects/Python/UdemyProjects/SixSimplifying/code/models") import user,但现在我收到了这个错误:python: can't open file 'D:\Projects\Python\UdemyProjects\SixSimplifying\code\Test.py': [Errno 2] No such file or directory【参考方案2】:

最后,我解决了我的问题:

正如@Little Bamboo 所说:我使用 sys 概念进行如下导入:

import sys    
sys.path.append("D:\\Projects\\Python\\UdemyProjects\\SixSimplifyingTwo")    
from mycode.models.userone import UserModel

但这还不是全部,我的一些文件具有相同的名称,我更改了文件的名称。

我还有一个名为 code 的文件夹,从下面的链接中我了解到 code 是一个内置的 Python 模块,我更改了 code 文件夹的名称。

Werkzeug AttributeError: 'module' object has no attribute 'InteractiveInterpreter'

【讨论】:

你能把我的答案标记为正确吗?谢谢!很高兴为您提供帮助!

以上是关于如何在python中导入文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 python 中导入 CSV 文件?

如何在 python 中导入名称中带有空格的文件?

如何在另一个 python 文件中导入屏幕类?

Python 如何从 .egg 文件中导入模块?

如何在 Django Settings.py 中导入另一个 Python 3 文件?

如何使用更改的入口点(sys.path)在 Python 中导入文件?