【问题标题】:Change package name when running setup.py运行 setup.py 时更改包名称
【发布时间】:2018-08-16 22:25:46
【问题描述】:

我已经分叉了一个 repo,现在我已经克隆了它。当在其中运行 setup.py 文件时,Python 会将包安装在 site-packages 中作为一个不起眼的名称,在 Python 文件中导入它是不可行的。

例如,我 fork 并克隆了一个名为 foo 的 repo。我也可以在 setup.py 文件中看到这一点:

setup(
    name='foo',
    version='3.3.0-rc6',
    packages=find_packages('src'),
    package_dir={'': 'src'},
    include_package_data=True,

当我运行python setup.py install 时,我发现包已安装为foo-3.3.0rc6-py3.6.egg。我不想在每个使用它的项目中都以这个名称导入包。

我怎样才能将包名称更改为foo(通过 setup.py 运行/安装时),以便我可以运行import foo 而不是import foo-3.3...

我觉得我不能只是重命名它,就好像我希望其他用户克隆 repo 而不必像我一样经历同样的麻烦。包名是否嵌入在 setup.py 文件夹中的某处?

如果您需要其他任何东西,请告诉我,我愿意解决此问题。

【问题讨论】:

  • 你有没有尝试过?你的目录结构是什么样的?

标签: python git clone setuptools


【解决方案1】:

这只是鸡蛋的名字,你不必担心。 Python 知道在哪里寻找包,所以当你这样做时:

import foo

...它会做正确的事。

【讨论】:

    【解决方案2】:

    您不必导入foo-3.3;实际上你不能导入,因为它是SyntaxError

    您不必从foo-3.3.0rc6-py3.6.egg 导入foo-3.3,因为distutils/setuptools 为鸡蛋配置了正确的导入路径。查看easy-install.pth 文件,您会找到./foo-3.3.0rc6-py3.6.egg。运行 python 并验证 sys.path — 必须有 foo-3.3.0rc6-py3.6.egg 条目,以便 import foo 工作。

    【讨论】:

    • 糟糕,我的错!我不认为我能够导入它,因为真正的包在 .egg 文件夹中。弄得一头雾水。感谢您的提示,我可以导入我克隆的包。
    猜你喜欢
    • 2016-03-11
    • 1970-01-01
    • 1970-01-01
    • 2017-07-31
    • 2018-07-09
    • 1970-01-01
    • 1970-01-01
    • 2016-08-16
    • 2017-03-28
    相关资源
    最近更新 更多