如何在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中导入文件?的主要内容,如果未能解决你的问题,请参考以下文章