之前已经在PyCharm中,本地调试期间,解决了相对路径导入的问题:
PyCharm中本地调试是可以导入的:
但是同样的代码:
processData/mysqlQa/MongodbToMysqlQa.py# import os
# import sys
# sys.path.append(os.path.join(os.path.split(os.path.realpath(__file__))[0], '../../util'))
# sys.path.append(os.path.join(os.path.split(os.path.realpath(__file__))[0], '../'))
# sys.path.append(os.path.join(os.path.split(os.path.realpath(__file__))[0], '../..'))
# sys.path.append(os.path.join(os.path.split(os.path.realpath(__file__))[0], '../../util'))
# sys.path.append(os.path.join(os.path.split(os.path.realpath(__file__))[0], '../../util/crifanLib'))
from util import configs
from util.crifanLib import crifanFile, crifanLogging, crifanMysql
以及:
util/crifanLib/crifanHttp.pyfrom . import crifanFile
但是上传到服务器上后,去命令行中运行,就出错了:(debug_xx-wDGPvi3o) [root@xx-general-01 mysqlQa]# python MongodbToMysqlQa.py
Traceback (most recent call last):
File "MongodbToMysqlQa.py", line 16, in <module>
from util import configs
ImportError: No module named 'util'
所以对于 相对路径的导入,看来还是理解的不够透彻
去搜:
python relative import No module named
试试回到项目根目录去试试,结果问题依旧:(debug_nlp-wDGPvi3o) [root@xx-general-01 debug_nlp]# python processData/mysqlQa/MongodbToMysqlQa.py
Traceback (most recent call last):
File "processData/mysqlQa/MongodbToMysqlQa.py", line 16, in <module>
from util import configs
ImportError: No module named 'util'
加了-m也不对:(debug_nlp-wDGPvi3o) [root@xx-general-01 debug_nlp]# python -m processData/mysqlQa/MongodbToMysqlQa.py
/root/.local/share/virtualenvs/debug_xx-wDGPvi3o/bin/python: Error while finding spec for 'processData/mysqlQa/MongodbToMysqlQa.py' (<class 'ImportError'>: No module named 'processData/mysqlQa/MongodbToMysqlQa')
还是好好看看:
python 相对路径导入 No module named
通过:
感觉是:
“某个包中的一个模块,而你试图以脚本模式执行,但是这种模式不支持相对导入。”
所以只能用sys.path.append加上path的方式去解决。
另外,感觉之前PyCharm中之所以可以正常运行,可能是因为:
在Debug调试配置中,有:Add content roots to PYTHONPATH
Add source roots to PYTHONPATH
或许就是把相关路径加入到Python的Path中,使得可以正常运行代码的。
所以就去试试sys.path.append吧
结果试了试:
在项目根目录去-m运行
在项目根目录的父目录去-m运行
去给各级文件夹都加上__init__.py
都还是不行:(debug_nlp-wDGPvi3o) [root@xx-general-01 debug_nlp]# python -m processData.mysqlQa.MongodbToMysqlQa
currentPath=/xxx/debug_nlp/processData/mysqlQa
projectRootPath=/xxx/debug_nlp
utilLibPath=/xx/debug_nlp/util
crifanLibPath=/xx/debug_nlp/util/crifanLib
crifanBeautifulSoup: Can not found lib BeautifulSoup
crifanString