3
所以我有一個main.py file
內/home/richard/projects/hello-python
目錄:從定製包導入失敗,Python中
import sys
sys.path.append('/home/richard/projects/hello-python')
from Encode import Ffmpeg
x = Ffmpeg()
x.encode()
我已經那麼在/home/richard/projects/hello-python/Encode
目錄中創建一個包:
__init__.py
Ffmpeg.py
初始化文件是空的。 Ffmpeg.py
文件包含:
class Ffmpeg(object):
i = 150
def __init__(self):
print "i am constructor"
def encode(self):
print "hello world"
現在我運行main.py
這樣的腳本:
python main.py
我得到這樣的輸出:
[email protected]:~/projects/hello-python$ python main.py
Traceback (most recent call last):
File "main.py", line 5, in <module>
x = Ffmpeg()
TypeError: 'module' object is not callable
[email protected]:~/projects/hello-python$
我認爲有一些問題,我sys.path
所以我模塊不能正確導入,但我不知道如何解決它。
並回答原因:您得到的錯誤表明Ffmpeg被視爲由Ffmpeg.py文件表示的模塊。你真的想要一個在該模塊中的類。兩個名字都是一樣的,沒有錯,但可能會讓人困惑。 – bcelary
Python 3 stdlib通常使用* file/module *名稱全部小寫的約定(並且爲了避免與大寫的*類*名稱混淆,只是爲了避免這種混淆,如果採用這種方式,導入將會從'encode.ffmpeg導入Ffmpeg'。 –