我无法导入文件,但文件夹中的其他文件可以
I can't import a file but the other file in the folder can
从昨天开始,我遇到了导入问题。
我不明白导入我需要编辑的代码是如何工作的。
config.py在项目的根文件夹中,服务器在这里启动。
在server/src/session.py
中,我们可以找到这个
#!/usr/bin/env python
# -*- Mode: Python; tab-width: 4; indent-tabs-mode: nil; coding: utf-8; -*-
# vim:set ft=python ts=4 sw=4 sts=4 autoindent:
'''docstring'''
from __future__ import with_statement
from Cookie import CookieError, SimpleCookie
from atexit import register as atexit_register
from datetime import datetime, timedelta
from hashlib import sha224
from os import makedirs, remove
from os.path import exists, dirname, join as path_join, isfile
from shutil import copy
from shutil import move
from tempfile import mkstemp
try:
from cPickle import dump as pickle_dump, load as pickle_load
except ImportError:
from pickle import dump as pickle_dump, load as pickle_load
from config import WORK_DIR
最后一次导入很奇怪,因为没有 server/src/config.py
,config.py 文件在项目文件夹的根目录中。
那么,为什么他可以在这里导入配置?
当我尝试在我的文件中做同样的事情时 server/src/save_in_database.py
:
import MySQLdb
import os
from config import DB_HOST, DB_USER, DB_PASS
我遇到导入错误:
Traceback (most recent call last):
File "server/src/save_in_database.py", line 4, in <module>
from config import DB_HOST, DB_USER, DB_PASS
ImportError: No module named config
当我尝试在我的文件 server/src/save_in_database.py
中导入 session
文件时,出现了一个错误,但在其他文件中它运行良好。
Traceback (most recent call last):
File "server/src/save_in_database.py", line 3, in <module>
from session import get_session
File "/home/etienne/ed-labelisator/back/server/src/session.py", line 32, in <module>
from config import WORK_DIR
ImportError: No module named config
我不明白原程序员是怎么输入的,如果有人能帮帮我。
谢谢你,抱歉英语不好
好的,经过多次研究,我解决了我的问题。
当我启动服务器时,程序将 src/server 添加到 python 路径:
sys.path.append(os.path.join(os.path.dirname(__file__), 'server/src'))
因此,.
和 ./src/server
可以导入,这就是它对他有用的原因。
而我,当我执行 python2 server/src/save_in_database.py
时,.
目录未添加到 python pah,所以我无法导入 config
并且其他文件也无法执行那个。
为了解决这个问题,我将以下代码添加到 server/src/save_in_database.py
if __name__ == '__main__':
import sys
sys.path.append(os.path.join(os.path.dirname(__file__), '../..'))
从昨天开始,我遇到了导入问题。
我不明白导入我需要编辑的代码是如何工作的。
config.py在项目的根文件夹中,服务器在这里启动。
在server/src/session.py
中,我们可以找到这个
#!/usr/bin/env python
# -*- Mode: Python; tab-width: 4; indent-tabs-mode: nil; coding: utf-8; -*-
# vim:set ft=python ts=4 sw=4 sts=4 autoindent:
'''docstring'''
from __future__ import with_statement
from Cookie import CookieError, SimpleCookie
from atexit import register as atexit_register
from datetime import datetime, timedelta
from hashlib import sha224
from os import makedirs, remove
from os.path import exists, dirname, join as path_join, isfile
from shutil import copy
from shutil import move
from tempfile import mkstemp
try:
from cPickle import dump as pickle_dump, load as pickle_load
except ImportError:
from pickle import dump as pickle_dump, load as pickle_load
from config import WORK_DIR
最后一次导入很奇怪,因为没有 server/src/config.py
,config.py 文件在项目文件夹的根目录中。
那么,为什么他可以在这里导入配置?
当我尝试在我的文件中做同样的事情时 server/src/save_in_database.py
:
import MySQLdb
import os
from config import DB_HOST, DB_USER, DB_PASS
我遇到导入错误:
Traceback (most recent call last):
File "server/src/save_in_database.py", line 4, in <module>
from config import DB_HOST, DB_USER, DB_PASS
ImportError: No module named config
当我尝试在我的文件 server/src/save_in_database.py
中导入 session
文件时,出现了一个错误,但在其他文件中它运行良好。
Traceback (most recent call last):
File "server/src/save_in_database.py", line 3, in <module>
from session import get_session
File "/home/etienne/ed-labelisator/back/server/src/session.py", line 32, in <module>
from config import WORK_DIR
ImportError: No module named config
我不明白原程序员是怎么输入的,如果有人能帮帮我。
谢谢你,抱歉英语不好
好的,经过多次研究,我解决了我的问题。
当我启动服务器时,程序将 src/server 添加到 python 路径:
sys.path.append(os.path.join(os.path.dirname(__file__), 'server/src'))
因此,.
和 ./src/server
可以导入,这就是它对他有用的原因。
而我,当我执行 python2 server/src/save_in_database.py
时,.
目录未添加到 python pah,所以我无法导入 config
并且其他文件也无法执行那个。
为了解决这个问题,我将以下代码添加到 server/src/save_in_database.py
if __name__ == '__main__':
import sys
sys.path.append(os.path.join(os.path.dirname(__file__), '../..'))