python-3.x - PyCharm中如何导入模块
问题描述
我有两个项目。在第一个中,我可以导入我的模块 importme.py ,例如:
import importme
现在我可以在 importme 模块中使用我的函数 hello() 没有任何问题。在第二个中,我收到:
ImportError: No module named 'importme'
但我可以通过以下方式导入它:
from . import importme
为什么我不能在两个项目中以相同的方式导入我的模块?我应该配置一些路径吗?
编辑1:
第一个项目的目录结构:
testproject/
├── importme.py
└── start.py
第二个项目的目录结构:
spiders/
├── spider.py
├── download_page.py
├── importme.py
└── __init__.py
文件init .py 为空。
解决方案
我最喜欢的处理方法PYTHONPATH
是在虚拟环境中以编辑模式安装包。
创建虚拟环境
# create $ python -m venv ~/virtualevns/myenv # then activate it $ source ~/virtualenvs/myenv/bin/activate # you can check whether it got activated $ which python home/user/virtualenvs/myenv/bin/python
为你的项目写作
setup.py
。为此,请参阅官方分发包教程。以可编辑的格式安装包。
如果您安装带有
-e
标志 pip 的软件包,它将以可编辑的格式安装,这意味着您在代码中所做的所有更改都将出现在您环境的软件包中:$ cd mypkg $ pip install -e .
最后,您需要将您的虚拟环境设置为在您使用的编辑器中使用的任何 IDE。
这是一个很棒的工作流程,因为它干净且可靠——您使用的正是您在生产/成品包环境中使用的东西。
推荐阅读
- python - 设置范围时忽略投影限制
- java - Spark 因 org.apache.kafka.common.serialization.StringDeserializer 的 NoClassDefFoundError 而失败
- python - 为什么我配置的记录器没有被使用?
- python - 如何在熊猫中标记具有多个条件的列?
- oracle - Oracle SOA JMS 队列的一次处理
- javascript - 出现错误:致命错误:未定义 jwtPrivateKey。
- objective-c - 在 xcode 上运行 cordova 应用程序时出现运行时异常
- c++ - C++ 中的双感叹号 (!!) 是否会花费更多 CPU 时间?
- google-apps-script - 查找 InlineImage 的 googleusercontent.com URL
- ios - 如何断言在我的单元测试中调用了委托