如何使setup.py与代码库和应用程序的代码相得益彰

时间:2017-10-11 20:37:49

标签: python pip setup.py requirements.txt

我正在创建一个库,但该库也是一个应用程序。因此,我试图让那些没有真正编程背景的人尽可能轻松地编写代码。我决定同意this post中的建议。但是,我遇到了各种各样的问题。我希望用户做

$ make config
$ make install

我需要这样做,因为它实际上是一个C ++ / Python代码,所以我将它们与Swig和Cmake混合在一起。我的目标是制作configinstall目标,这样安装就变得轻而易举了。我遇到的第一个问题如下:如果setup.py文件的内容与

一样简单
from setuptools import setup, find_packages

def read(*names, **kwargs):
    return io.open(
        join(dirname(__file__), *names),
        encoding=kwargs.get("encoding", "utf8")
    ).read()

setup(
    name="myproject",
    version="0.1.0",
)

我输入     $ python setup.py build

代码实际安装在pip

中的可能性如何?
$ pip freeze
-e git+https://svn.3me.tudelft.nl/git/myproject.git@92f08bfcbaf1f78a6acdf5f03b5c7a36e87800eb#egg=myproject

我改进了setup.py,因此它也有依赖关系:

setup(
    name="myproject",
    version="0.1.0",
    install_requires=[
        # eg: "aspectlib==1.1.1", "six>=1.7",
        "numpy", "scipy", "Sphinx", "pytest", "matplotlib", "dill"
    ],
)

我按照上面的链接讨论了requirements.txt

--index-url https://pypi.python.org/simple/

-e . 

我运行pip install -r requirements.txt它实际上安装了所需的所有依赖项,但是如果我重新运行它,它会失败并带有

Exception:
Traceback (most recent call last):
  File "/Users/aaragon/.virtualenvs/test7/lib/python3.5/site-packages/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/Users/aaragon/.virtualenvs/test7/lib/python3.5/site-packages/pip/commands/install.py", line 342, in run
    prefix=options.prefix_path,
  File "/Users/aaragon/.virtualenvs/test7/lib/python3.5/site-packages/pip/req/req_set.py", line 778, in install
    requirement.uninstall(auto_confirm=True)
  File "/Users/aaragon/.virtualenvs/test7/lib/python3.5/site-packages/pip/req/req_install.py", line 703, in uninstall
    '(at %s)' % (link_pointer, self.name, dist.location)
AssertionError: Egg-link /Users/aaragon/Local/myproject does not match installed location of myproject (at /Users/aaragon/Local/myproject/src)

为什么我会收到此错误?

0 个答案:

没有答案