在Python中从自定义包导入失败

在Python中从自定义包导入失败,python,Python,因此,我在/home/richard/projects/hello python目录中有一个main.py文件: import sys sys.path.append('/home/richard/projects/hello-python') from Encode import Ffmpeg x = Ffmpeg() x.encode() __init__.py Ffmpeg.py 然后,我在/home/richard/projects/hello pytho

因此,我在
/home/richard/projects/hello python
目录中有一个
main.py文件

import sys
   sys.path.append('/home/richard/projects/hello-python')

   from Encode  import Ffmpeg
   x = Ffmpeg()
   x.encode()
__init__.py
Ffmpeg.py
然后,我在
/home/richard/projects/hello python/Encode
目录中创建了一个包:

import sys
   sys.path.append('/home/richard/projects/hello-python')

   from Encode  import Ffmpeg
   x = Ffmpeg()
   x.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
我得到这个输出:

richard@richard-desktop:~/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
richard@richard-desktop:~/projects/hello-python$ 
richard@richard-桌面:~/projects/hello python$python main.py
回溯(最近一次呼叫最后一次):
文件“main.py”,第5行,在
x=Ffmpeg()
TypeError:“模块”对象不可调用
richard@richard-桌面:~/projects/hello python$

我认为我的
sys.path
存在一些问题,因此无法正确导入我的模块,但我不确定如何修复它。

并回答原因:您收到的错误表明Ffmpeg被视为由Ffmpeg.py文件表示的模块。你真的想要一个在那个模块中的类。这两个名称都是相同的,没有错,但可能会混淆。Python3stdlib通常使用文件/模块名称都是小写的约定(并进行了更改,以避免与大写的类名混淆。如果采用此方法,则导入将是
from encode.ffmpeg import ffmpeg
from Encode.Ffmpeg import Ffmpeg