因此,我尝试了许多关于堆栈溢出的解决方案,但仍然存在问题。
下面是我的项目结构。
project
| tool1
| - application.py
| resources
| - tools
| - dao.py
在application.py中,我具有以下导入语句:
from resources.tools.dao import DAO
这在PyCharm中工作正常,但是当我尝试从项目目录(python tool1/application.py
)从命令行运行它时,我得到:
ModuleNotFoundError: No module named 'resources'
如果我移入'tool1'文件夹并运行:python application.py
我尝试在导入之前添加..,通过PyCharm将其他文件夹设置为我的源根文件夹,并将空白__init__.py
文件添加到资源目录。
为什么PyCharm能够找到“资源”,但命令行却找不到?如何更改此设置,以使我的解决方案可在任何位置使用?
如果有帮助,我正在使用Python 3.7和Windows。我愿意重组项目目录,但是将有多个工具/应用程序都将在资源目录中使用dao.py和其他工具,因此资源至少应与其他项目一样高。
谢谢。
答案 0 :(得分:1)
假设您在每个目录中创建了__ init __.py。您可以添加到系统路径。 它应该从任何地方导入dao。它肯定可以在linux中工作。
# tool1.__init__.py
import sys
import os
CURRPATH, TAIL = os.path.split(os.getcwd())
while CURRPATH != "/":
if TAIL == 'project':
if os.path.join(CURRPATH, TAIL) not in sys.path:
sys.path.append(os.path.join(CURRPATH, TAIL))
break
CURRPATH, TAIL = os.path.split(CURRPATH)
from resources.tools.dao import DAO
和在application.py
中# tool1.application.py
from __init__ import DAO
答案 1 :(得分:0)
如果project是您的根目录(即,您已初始化此目录的pythonpath),则需要导入如下模块:
from project.resources.tools.dao import DAO
答案 2 :(得分:0)
使用6.45
参数运行脚本。即
-m
这使脚本与命名空间中的python -m project.tool1.application
包一起运行。 (您可能需要向project
添加 init .py文件以使其成为一个包)
答案 3 :(得分:0)
另一种声明父目录路径的方法是:
<div class="p-4 border rounded">
<table id="tblData" class="table table-striped table-bordered" style="width:100%">
<thead class="thead-dark">
<tr class="table-info">
<th>Opis</th>
<th>Kratak Opis</th>
<th>Datum i vrijeme slanja</th>
<th>Vrsta Tiketa</th>
<th>Status</th>
<th>Korisnik</th>
<th></th>
</tr>
</thead>
</table>
</div>
然后这条线就可以正常工作了:
import os, sys
dir_path = os.path.dirname(os.path.realpath(__file__))
parent_dir_path = os.path.abspath(os.path.join(dir_path, os.pardir))
sys.path.insert(0, parent_dir_path)