我正在皮查姆做一个项目。项目结构如下:
/projectRoot/
folder1/
somecode.py
utils/
__init__.py
myutils1.py
我想知道如何进行导入,以便在pyCharm控制台中以交互方式运行代码时,以及在使用
python somecode.py
终端中的命令。
目前我有:
from utils.myutils1.py import myClass
但是命令行出现错误:
File "somecode.py", line 10, in from utils.myutils1 import myClass ModuleNotFoundError: No module named 'utils'
在PyCharm上:
Traceback (most recent call last): File "/home/ubuntu/anaconda3/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 2881, in run_code exec(code_obj, self.user_global_ns, self.user_ns) File "", line 1, in from utils.myutils1 import myClass ModuleNotFoundError: No module named 'utils'
关于项目中模块的正确文件夹结构以及如何正确导入它们的任何建议?
谢谢!
您可以在
folder1
文件夹中使用utils
包:然后代码将以任何方式工作:
类似的错误,这似乎对我有用:
确保项目解释器设置为,例如:
C:\Python36\python.exe
(在我的例子中),而不是某处或其他地方的副本。'文件>设置>项目>项目解释程序'
或者,长话短说,如果该路由不合作,也可以尝试在启动PyCharm之前找到
workspace.xml
并手动更改SDK_HOME
:为了解释答案,我重新创建了你的项目结构
somecode.py
myutils1.py
从pycharm运行它们没有任何问题,但是从终端运行它们会产生以下错误
问题是Pycharm很少为你做什么,因为你不知道为什么它不在终端工作。所以在告诉你你需要什么之前,我会告诉你两件事,PyCharm自己做的。
Python控制台
从Pycharm启动Python控制台时,会使用首选项执行一些代码。
如你所见,有两种选择
还有一个开始的脚本。因此,它将项目的根添加到python的路径中。它由两种主要方式控制
sys.path
和PYTHONPATH
环境变量如果我在Python控制台中运行以下代码
如您所见,
'/Users/tarun.lalwani/Desktop/payu/projects/folderstructure27'
被添加到Python终端。Python配置
当您使用Pycharm配置为在代码中运行时,有两个类似的选项。
我们可以把
somecode.py
的代码改成下面的从输出中我们可以看到
PYTHONPATH
设置为当前项目文件夹。从终端运行
现在让我们用我们所做的修改从终端运行
somecode.py
。所以这表示当我们在终端中运行它时没有
PYTHONPATH
。让我们通过删除print(os.environ['PYTHONPATH'])
代码来再次运行它。您将得到以下输出如您所见,
folder1
被添加到sys.path
中,因为它是包含somecode.py
的文件夹,但根文件夹尚未添加。终端中的修复很简单,就是在PYTHONPATH中设置根目录路径。现在代码也可以在终端上运行了。
但是它们的工作方式与Python控制台不同。
重要提示:在远程解释器上使用PyCharm的Python控制台。
如果使用远程解释器选项pycharm运行python控制台将失败。这是因为它将附加本地PC的路径,而不是远程服务器的路径。 为了解决这个问题,必须在本地PC目录和远程服务器路径之间添加一个映射。
相关问题 更多 >
编程相关推荐