简体   繁体   English

使用setuptools将模块安装到站点包

[英]Install module to site-packages with setuptools

I'm trying to upload a CLI to PIP that, once installed, will run when the user types myscript 我正在尝试将CLI上传到PIP,一旦安装,将在用户键入myscript时运行

My folder structure is like this: 我的文件夹结构是这样的:

lib
  myscript
    __init__.py (empty)
    __main__.py (code that needs to run)
    utilities.py (needs to be imported from main)

scripts
  myscript

setup.py

My setup.py should install the lib.myscript package and install myscript as a command-line module 我的setup.py应该安装lib.myscript包并安装myscript作为命令行模块

setup.py

import setuptools
setuptools.setup(
    name='myscript',
    version='1.0',
    scripts=['./scripts/myscript'],
    packages=['lib.myscript'],
    install_requires=['setuptools', 'pandas >= 0.22.0', 'numpy >= 1.16.0'],
    python_requires='>=3.5'
)

scripts/myscript

#!/usr/bin/env bash

if [[ ! $@ ]]; then
    python -m myscript -h
else
    python -m myscript $@
fi

Once I do python setup.py install , myscript is installed as a command-line module and it runs. 一旦我做了python setup.py installmyscript就会作为命令行模块安装并运行。 However, it throws an error saying that there is no module named myscript . 但是,它会抛出一个错误,说没有名为myscript模块。

You haven't install myscript , you've installed lib.myscript so try this: python -m lib.myscript . 你还没有安装myscript ,你已经安装了lib.myscript所以试试这个: python -m lib.myscript And for Python to recognize lib as a package create an empty file lib/__init__.py . 并且让Python将lib识别为一个包创建一个空文件lib/__init__.py

PS. PS。 This code: 这段代码:

#!/usr/bin/env bash

if [[ ! $@ ]]; then
    python -m myscript -h
else
    python -m myscript $@
fi

could be simplified as: 可以简化为:

#!/usr/bin/env bash
exec python -m myscript ${@:--h}

which in shell-speak means "Use $@ if not empty, else -h " 在shell-speak中表示“如果不为空则使用$@ ,否则-h

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何从setuptools将文件安装到站点软件包(而不是软件包子文件夹)? - How do you install a file to site-packages (not package sub-folder) from setuptools? 如何在“ site-packages”中安装python包? - how to install python packages in “site-packages”? 使用setuptools将自己的python项目源代码添加到site-packages文件夹中(setup.py install) - Adding your own python project source code to site-packages folder using setuptools (setup.py install) 如何将 yaml 安装到站点包 - How to install yaml to site-packages 在python模块安装过程中会发生什么? 我可以将模块源复制到site-packages吗? - What happens during a python module install? Can I just copy the module source to site-packages? 如何导入站点包中安装的模块 - How to import a module installed in site-packages pip3 install [module] 创建新的“/.local/.../site-packages”目录? - pip3 install [module] creating new "/.local/.../site-packages" directory? 修改PYTHONPATH以将软件包安装到新的“站点软件包”路径中 - Modify PYTHONPATH to install packages into new “site-packages” path 'dist-packages'与'site-packages'中的Python模块 - Python module in 'dist-packages' vs. 'site-packages' Python3 setuptools bidst_rpm:删除/usr/lib/python3.x/site-packages前缀。 使rpm安装目录适应客户端计算机的python路径 - Python3 setuptools bidst_rpm : remove /usr/lib/python3.x/site-packages prefix. Adapt rpm install directory to client machine's python path
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM