相关疑难解决方法(0)

setup.py并将文件添加到/ bin /

我无法弄清楚如何使setup.py添加一个纸条给用户/bin/usr/bin或什么的.

例如,我想将添加myscript.py/usr/bin,使得用户可以调用myscript.py从任何目录.

python

59
推荐指数
4
解决办法
3万
查看次数

如何在setup.cfg中设置entry_points

我正在将我的配置从setup.py移动到setup.cfg并且在设置entry_points参数时遇到问题,有人可以告诉我什么是正确的语法?目前我正在使用混合方法,但是,我想将entry_points移动到setup.cfg.

def setup_package():
setup(version=get_version(), entry_points={'console_scripts':['app=my_package.app.run:cli'],})
Run Code Online (Sandbox Code Playgroud)

[metadata]
name = my-package
description = my-package
license = unlicensed
long-description = README.md
platforms = any
classifiers =
  Programming Language :: Python

[options]
zip_safe = False
packages = my_package,  my_package.app
include_package_data = True
package_dir =
  = .
tests_require = pytest; pytest-cov

[entry_points]
console_scripts =
  my-package = my_package.app.run:cli
Run Code Online (Sandbox Code Playgroud)

谢谢

python setuptools python-3.x python-3.6

19
推荐指数
1
解决办法
2266
查看次数

包的结构,也可以作为命令行脚本运行

我写了一个包含'标准'最小结构的包.它看起来像这样:

my_package/
    my_package/
        __init__.py
    setup.py
Run Code Online (Sandbox Code Playgroud)

__init__.py 包含一个类,因此可以像人们期望的那样简单地导入和使用.

但是,代码确实有助于以命令行方式使用,例如

python my_package --arg1 "I like bananas."
Run Code Online (Sandbox Code Playgroud)

起初,我刚刚进行了if __name__ == '__main__'检查,__init__然后使用argparse.这有效,但它不漂亮,因为它意味着你从命令行调用它,如下所示:

python my_package/__init__.py --arg1 "I like bananas."
Run Code Online (Sandbox Code Playgroud)

根据我的阅读,这是一个__main__.py文件进入的地方,它将作为文件夹内的默认脚本执行(类似于index.html网站上的文件).我的想法是然后简单地导入__init__.py,运行argparse并将参数提供给类构造函数.像这样:

import argparse
from __init__ import MyClass

parser = argparse.ArgumentParser()
parser.add_argument("--arg1", help="Some dummy value")

args = parser.parse_args()
my_class = MyClass(**vars(args))
my_class.do_stuff()
Run Code Online (Sandbox Code Playgroud)

这是类似的包应该如何构建,还是有更好的方法?


上面的工作, PyCharm告诉我,in __main__.py __init__是一个未解决的参考.同为MyClass对进口线.当我使用.__init__(带点)时,警告消失,但代码不再起作用,给我一个ImportError: attempted relative import with no known parent …

python command-line argparse python-3.x python-packaging

5
推荐指数
1
解决办法
230
查看次数