Pip包在本地工作,但如果我通过pipenv将它安装到另一个环境中则不行

Pip package working locally but not if i install it via pipenv into another environment

我为 api 创建了一个 pypi 包以从我的学校获取课程并将其上传到 pypi 但是当我安装它时,它没有被识别。它在本地工作得很好。

我试过从 startup.py 中删除一些行,比如 modules: [],但它似乎没有改变任何东西,仍然在本地工作得很好

setup.py

from setuptools import setup

with open("README.md", "r") as fh:
  long_description = fh.read()

setup(
  name="zermelo.py",
  version="1.0.0",
  license="MIT",
  url="https://github.com/wouter173/zermelo.py",

  description="Zermelo api wrapper library for python.",
  long_description=long_description,
  long_description_content_type="text/markdown",

  package_dir={"zermelo": "zermelo"},
  install_requires=["requests>=2.17.0"],

  classifiers=[
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.7",
    "Operating System :: OS Independent",
    "License :: OSI Approved :: MIT License",
    "Development Status :: 5 - Production/Stable",
  ]
)

下面是我的文件层次结构:

源代码被放入 __init__ 文件中,如下所示:

from .client import Client

.client 文件中 client.py 我有一个名为 Client 的 class 具有一些功能,但我认为这与它在本地工作得很好

我尝试将包导入到这样的项目中:

from zermelo import Client

在本地有效但在 pipenv 中无效。

这些是我用来上传包到pypi的命令:

python setup.py sdist
python setup.py bdist_wheel sdist
twine upload dist/*

这就是我使用 pipenv 的方式:

pipenv --python 3.7
pipenv install zermelo.py
pipenv shell
python
>>> from zermelo import Client

但是还是不行,我也不知道为什么。

当我在 pipenv 中导入它时:

from zermelo import Client

它给 returns 一个错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'zermelo'

我试过使用不同的名称和 capitalizing zermelo 但是从 zermelo 导入客户端没有任何效果,但在本地

from zermelo import Client

按照我想要的方式工作 returns 来自 init.py 文件的客户端。

您的 setup.py 没有列出要安装的内容。您必须使用 packages=<a list of packages>py_modules=<a list of .py modules>.

https://packaging.python.org/tutorials/packaging-projects/