创建和导入自定义python包 - 导入不在根

时间:2016-02-25 18:54:20

标签: python python-2.7 packages sys

我对Python很陌生,我想创建我的第一个Python库供人工使用。

我正在使用Python 2.7.5,并运行IDLE接口。

到目前为止,我从文档和相关问题中理解的是:

  • Python浏览sys.path中列出的目录列表以查找脚本和库
  • 包目录必须包含__init__.py文件,该文件可以为空
  • 我想要创建的模块应该是modulename.py文件,其中的代码位于包目录

(资料来源:http://www.johnny-lin.com/cdat_tips/tips_pylang/path.html --- https://docs.python.org/2/tutorial/modules.html

这就是我尝试失败的原因:

  • 创建了个人包目录C:\....\pythonlibs
  • 创建了子包目录C:\....\pythonlibs\package
  • 在两个文件夹
  • 中创建了__init__.py文件
  • mymodule.py目录
  • 中创建了packacge文件

然后在IDLE中使用了这段代码:

import sys     
sys.path.append(r'C:\....\pythonlibs')

第一期:

  

目前我必须这样做,每次追加我进入IDLE。我如何永久保存sys.path中的目录,就像那里有很多其他目录一样?

然后我尝试导入我的包:

import pythonlibs #fails!! why?      
import pythonlibs.package #fails!! why?       
import package #works     

错误是:ImportError: No module named pythonlibs

第二个问题?

  

这似乎违反了文档,为什么我无法从根pythonlibs文件夹导入?

1 个答案:

答案 0 :(得分:2)

有线

sys.path.append(r'C:\....\pythonlibs')

您正在指示解释器开始在此目录中查找模块(库)。由于此目录不包含pythonlibs文件夹(父文件夹),因此无法导入该文件夹。

同样 - 因为它包含模块package,它可以导入它。