Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在编写setup.py文件时,如何包含修改过的第三方模块?_Python_Setuptools - Fatal编程技术网

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