2013-10-26 72 views
0

我试图执行我在Windows环境下编写的程序, 我始终在应该从应用程序中导入文件的行上发生错误子文件夹中。无法获取Python中的当前目录路径(Linux)

程序提供了以下错误,

Traceback (most recent call last): 
    File "BlackBox.py", line 26, in <module> 
    from BB_Files import BB_Expand 
ImportError: No module named BB_Files 

尽管该文件的存在BB_Expand BB_Files文件夹内,我仍然得到错误。

我也曾尝试附加在Python我当前目录的路径,

sys.path.append("/home/pe/Desktop/AES") 
# Sub-Folders of AES are also accessible 
sys.path.append("/home/pe/Desktop/AES/BB_Files") 

但仍没有运气,

这是文件结构,

/home/pe/Desktop/AES/Main.py 
/home/pe/Desktop/AES/BB_Files 
/home/pe/Desktop/AES/BB_Files/BB_Days.py 
/home/pe/Desktop/AES/BB_Files/BB_Expand.py 
/home/pe/Desktop/AES/BB_Files/BB_Steps.py 

这是输出ls -l指令,

drwxrwx--x 4 pe users 4096 Oct 26 21:43 BB_Files 
-rw-rw---- 1 pe users 15284 Oct 26 22:04 Main.py 

这是文件中的某些初始代码,

import sys # sys.argv ; sys.path, sys.exit 
import os 
import hashlib 
import struct # Interpret strings as packed binary data 
import getopt # for Runtime arguments 
import time 
from datetime import date 

# Append Paths from where the Files would be Imported. 
sys.path.append("/home/pe/Desktop/AES") 
# Sub-Folders of AES are also accessible 
sys.path.append("/home/pe/Desktop/AES/BB_Files") 
# Sub-Fodlers of BB_Files are also accessible now (Tables) 
from BB_Files import BB_Expand 
from BB_Files import BB_Steps 
from BB_Files import BB_Days 

这是该行给了一个错误,

from BB_Files import BB_Expand 

程序该行后不运行,因为Python中找不到这个模块。

但是,当我试图打印当前目录中我什么也得不到的路径,看看,

print("Path is:",os.path.dirname(__file__)) 
print("sufiyan") 

输出:

('Path is:', '') 
sufiyan 
Traceback (most recent call last): 
    File "BlackBox.py", line 25, in <module> 
    from bbfiles import bbexpand 
ImportError: No module named bbfiles 

我想知道为什么路径在Windows中打印效果不佳时不会打印。 我所得到的只是一个黑色空间,而不是当前目录的路径。

+0

尝试向两个文件夹添加一个'__init __。py'文件 – immortal

+0

您的意思是一个空文件? –

+0

是的,这个文件告诉python该文件夹是一个模块,只是它的存在。 – immortal

回答

1

显然,下面一行将抛出一个ImportError错误

from BB_Files import BB_Expand 
## if you comment this the next immediate line will give you same error 

因为这是你第一次从包装

所以导入模块的尝试,当你说

from <something> import <something-else> 

手段那么,您正在从package/module

进口

在你的情况下,这是一个package,可能是一个名为__init__.py的文件被放置在你的目录中,所以python将认为该目录是一个包。

## try this to get your directory name 
print __file__ 
print "Path is:", os.path.dirname(os.path.abspath(__file__)) 
+0

您只需使用'print()'表示法,因为您使用的是python3 + –

0

尝试在两个目录中添加__init__.py文件。它不必包含任何内容,但必须存在。 当Python尝试加载模块目录时,它首先尝试加载此文件,因为它可以包含有关模块加载的额外说明(例如从正确的文件导入与平台相关的代码的能力)。如果Python没有找到该文件,它可能不会将该目录视为Python模块,并且无法从中导入文件。

documentation了解更多关于它的信息。

0

/home/pe/Desktop/AES/BB_Files目录中添加一个名为__init__.py的空文件应该可以解决问题。阅读更多关于Python Docs

相关问题