我已经编写了Python代码,该代码分为两个文件,即
record_1.py
record_2.py
record_3.py
record_4.py
main.py
所有这些文件都放在一个公共文件夹中:
/user/mario/python/sampletest
当我尝试在main.py中导入上述文件时,执行以下命令时出现错误:
$] python main.py
ImportError: No module named record_1
下面是main.py代码:
import jaydebeapi
import record_1,record_2,record_3,record_4
def main():
def teradata_conn():
try:
conn_teradata = jaydebeapi.connect(jclassname='com.teradata.jdbc.TeraDriver',
url="jdbc:teradata://10.10.10.10",
driver_args=['@user','@pass'],
jars=['/user/mario/python/jar/tdgssconfig.jar','/user/mario/python/jar/terajdbc4.jar'])
print("Connection was successful")
record_1()
record_2()
record_3()
record_4()
except Exception as e:
print(e)
if __name__ == '__main__':
main()
任何帮助或建议都将受到高度赞赏。
import sys
print (repr(sys.path))
['', '/user/mario/anaconda2/lib/python27.zip',
'/user/mario/anaconda2/lib/python2.7',
'/user/mario/anaconda2/lib/python2.7/plat-darwin',
'/user/mario/anaconda2/lib/python2.7/plat-mac',
'/user/mario/anaconda2/lib/python2.7/plat-mac/lib-scriptpackages',
'/user/mario/anaconda2/lib/python2.7/lib-tk',
'/user/mario/anaconda2/lib/python2.7/lib-old',
'/user/mario/anaconda2/lib/python2.7/lib-dynload',
'/user/mario/anaconda2/lib/python2.7/site-packages',
'/user/mario/anaconda2/lib/python2.7/site-packages/aeosa',
'/user/mario/anaconda2/lib/python2.7/site
packages/IPython/extensions',
'/user/mario/.ipython']
答案 0 :(得分:2)
(来自https://docs.python.org/2/library/sys.html#sys.path的信息):
要使import
工作,模块所在的目录必须位于路径(sys.path)中。该路径将通常包括您正在运行的脚本所在的目录,但是如果Python无法确定该位置(例如,如果您执行{{1} })。在这种情况下,Python应该在路径中添加空字符串,即“当前目录”。
从python <script.py
的输出中可以看出,该脚本的运行方式阻止了Python知道其位置-Python在路径中的第一项中插入了空字符串“”,当您执行以下操作时:
print (repr(sys.path))
您的系统模块路径(... / anaconda2 / lib / ...)建议安装我不熟悉的Python。如果您实际上完全按照引用的命令来运行命令(python </usr/mario/python/sampletest/main.py
-当当前目录是主目录和模块所在的位置时),它应该已经可以工作了-但是在安装中,python main.py
命令可能是一些包装脚本,可以在运行将其弄乱的解释器之前更改目录或执行其他操作。
即使路径中没有python
,但路径中有“”仍使Python在当前目录中查找模块。考虑到您遇到的故障,这意味着(在脚本启动时)当前目录不是"/usr/mario/python/sampletest"
。如果不是模块目录,请查看/usr/mario/python/sampletest
会给您的解释。
可能会解决此问题的解决方案,请根据需要进行选择:
import os ; print (os.getcwd())
。python /usr/mario/python/sampletest/main.py
。也可以在其他导入之前使用/usr/mario/python/sampletest
。import os ; os.chdir("something")
答案 1 :(得分:0)
我不是Python专家。我隐约记得遇到了这个问题,当我添加以下内容时,它起作用了。但是再次,我试图导入位于不同目录中的模块。
sys.path.insert(0,'/user/mario/python/sampletest')
答案 2 :(得分:-4)
在每个逗号后放置空格 例如导入file1,file2,file3