Python 在编写setup.py文件时,如何包含修改过的第三方模块?
我编写了一个独立的脚本,它依赖于几个修改过的模块。目录结构如下所示:Python 在编写setup.py文件时,如何包含修改过的第三方模块?,python,setuptools,Python,Setuptools,我编写了一个独立的脚本,它依赖于几个修改过的模块。目录结构如下所示: client setup.py tsclient __init__.py tsup utils.py mutagen __init__.py blah.py blah.py ... colorama __init__.py blah.py blah.py ... 目前,如果我只是将u
client
setup.py
tsclient
__init__.py
tsup
utils.py
mutagen
__init__.py
blah.py
blah.py
...
colorama
__init__.py
blah.py
blah.py
...
目前,如果我只是将usup
脚本符号链接到我的~/bin
目录,我就可以直接调用脚本,并且它可以正常工作(所有内容都可以正常导入,没有问题)
现在我想制作一个setup.py脚本,以便分发它。我不知道怎么做。以下是我现在拥有的:
setup(
name='tsclient',
version='1.0',
scripts=['tsclient/tsup'],
packages=['tsclient', 'tsclient.mutagen', 'tsclient.colorama'],
)
问题是我不能只在tsup脚本中导入诱变剂,因为它现在是tsclient.诱变剂。如果我从Tclient import诱变剂将导入更改为,我会收到此错误(从诱变剂的\uuuu init\uuuuuuuuuuuuuuuuupy
文件):
我不认为最好的解决办法是通过诱变剂,改变每一个“诱变剂”的实例,并将其改为“tsclient.诱变剂”。这是我唯一的选择吗?不幸的是,你确实需要编辑诱变剂来实现这一点
幸运的是,Python2.5和更高版本的语法完全支持您正在做的事情
看
假设诱变剂现在说
from mutagen import _util
如果你改成说
from . import _util
然后,它将继续作为一个顶级包工作;如果需要的话,你可以把整个东西放到一个子包里,它仍然可以工作
(但是,如果您使用的是setuptools
,您可以在setup.py中添加一个参数,告诉setuptools您的软件包需要安装诱变剂。然后您的软件包可以直接导入诱变剂
。)
from . import _util