努力使 Python 模块可通过 PyPi 访问

Struggling with making a Python module accessible via PyPi

不久前我写了一个简单的 Python 界面用于使用 Pushwoosh 通知服务,它位于 https://github.com/Astutech/Pushwoosh-Python-library 并且我终于开始发布它以便可以使用点子。这是我第一次向 PyPi 发布 Python 库,我有点糊涂了。

尝试安装它时出现以下错误:

Collecting pushwoosh
  Using cached pushwoosh-1.0.0.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 20, in <module>
      File "/tmp/pip-build-5m3jj7uu/pushwoosh/setup.py", line 17, in <module>
        with open(path.join(here, 'DESCRIPTION.rst'), encoding='utf-8') as f:
      File "/usr/lib/python3.4/codecs.py", line 896, in open
        file = builtins.open(filename, mode, buffering)
    FileNotFoundError: [Errno 2] No such file or directory: '/tmp/pip-build-5m3jj7uu/pushwoosh/DESCRIPTION.rst'

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-5m3jj7uu/pushwoosh

看起来像是某种与路径相关的问题。我不确定 pushwoosh.py 是否在正确的位置。但是,如果我将它移动到 pushwoosh/pushwoosh.py,并添加一个 pushwoosh/__init__.py 文件,那么我需要按如下方式导入它:

from pushwoosh.pushwoosh import Pushwoosh

这显然不理想。从文档中我看不出哪里出错了。我应该使用什么目录布局?

编辑:我现在已经解决了 DESCRIPTION.rst 的问题,但是除非我将 pushwoosh.py 文件移动到 pushwoosh 文件夹并添加一个 __init__.py 文件,否则安装该库实际上并未安装 pushwoosh.py,因此它不起作用。我该如何修改它才能像这样导入它?

from pushwoosh import Pushwoosh

最后想通了。如果您将文件作为 __init__.py.

放在 module_name 文件夹中,它会起作用

您可以将其放入您的 __init__py 文件中。

from pushwoosh import Pushwoosh

这让您可以像这样进行导入,而无需将所有内容打包到 init.py 文件本身。

from pushwoosh import Pushwoosh

查看此 post http://mikegrouchy.com/blog/2012/05/be-pythonic-__init__py.html

以获得更好的解释