如何通过setup.py安装Python包,它依赖于可能无法在用户计算机上安装的C二进制文件

如何通过setup.py安装Python包,它依赖于可能无法在用户计算机上安装的C二进制文件,python,pip,setup.py,Python,Pip,Setup.py,我希望我在标题中正确地解释了问题,但这是我的情况: 在我们的工作场所,我们的笔记本电脑上没有管理员权限,但我需要使用一个使用C二进制文件的Python库。当我试图通过pip安装包时,由于无法安装二进制文件或在任何地方都找不到它们,所以安装失败。我通过下载.whl文件并手动安装来解决这个问题 现在我正在尝试打包我的应用程序,以便可以从pip(从我们的内部Gitlab服务器)安装它。当您尝试这种方法时,它显然失败了,原因与您不能首先通过pip安装它的原因相同 我正试图找到一种方法,让我的setup.

我希望我在标题中正确地解释了问题,但这是我的情况:

在我们的工作场所,我们的笔记本电脑上没有管理员权限,但我需要使用一个使用C二进制文件的Python库。当我试图通过pip安装包时,由于无法安装二进制文件或在任何地方都找不到它们,所以安装失败。我通过下载.whl文件并手动安装来解决这个问题

现在我正在尝试打包我的应用程序,以便可以从pip(从我们的内部Gitlab服务器)安装它。当您尝试这种方法时,它显然失败了,原因与您不能首先通过pip安装它的原因相同

我正试图找到一种方法,让我的setup.py检测它是否失败,如果失败,只需转到找到.whl的URL并手动安装即可。这是个坏主意吗?如果没有,我怎么做?我尝试将对
setup()
的调用包装在一个try块中,以便查看它是否引发了异常,但似乎没有显示任何内容:

# package requires
with open(os.path.join(here, "requirements.txt")) as f:
    install_requires = f.readlines()

# setup config
try:
    setup(
        name=about['__title__'],
        version=about['__version__'],
        description=about['__description__'],
        long_description=readme + '\n\n' + history,
        author=about['__author__'],
        author_email=about['__author_email__'],
        url=about['__url__'],
        license=about['__license__'],
        platforms=['any'],
        packages=["<redacted>"],
        package_data={'': ['LICENSE']},
        include_package_data=True,
        python_requires=">=3.7",
        install_requires=install_requires,
        tests_require=tests_requires,
        classifiers=(
            'Development Status :: 1 - Beta',
            'Topic :: Scientific/Engineering :: GIS',
            'Intended Audience :: Developers',
            'Intended Audience :: Science/Research',
            'Natural Language :: English',
            'License :: GPLv3',
            'Operating System :: OS Independent',
            'Programming Language :: Python',
            'Programming Language :: Python :: 3.7'
        )
except Exception as e:
    print(e)
#软件包需要
将open(os.path.join(此处为“requirements.txt”))作为f:
install_requires=f.readlines()
#设置配置
尝试:
设置(
名称=关于[''标题],
版本=大约[''版本],
描述=关于[''''''.'描述''.],
long_description=readme+'\n\n'+历史记录,
作者=关于[作者],
作者电子邮件=关于[作者电子邮件],
url=关于[''''.'url'.],
许可证=关于[''许可证],
平台=['any'],
软件包=[“”],
包_数据={'':['LICENSE']},
include_package_data=True,
python_需要=“>=3.7”,
install\u requires=install\u requires,
测试要求=测试要求,
分类器=(
“开发状态:1-测试版”,
“主题::科学/工程::地理信息系统”,
'目标受众::开发者',
“目标受众:科学/研究”,
“自然语言:英语”,
'许可证::GPLv3',
'操作系统::独立于操作系统',
'编程语言::Python',
'编程语言::Python::3.7'
)
例外情况除外,如e:
打印(e)

你试过在虚拟环境中安装它吗?我不确定它是否有效。它并没有真正回答你的问题,但我觉得从长远来看,它是一个更好的解决方案。要快速设置:
python3-m venv-venv;source venv/bin/activate;pip install
@MichaelRobinson是的,我正在康达envir中安装它onmentPlease看看他们是如何使用pyinstaller的如果目录中有C编译的二进制文件,它只是使用它们。否则它会在用户机器上编译它们。你试过在虚拟环境中安装它吗?我不确定它是否有效。这并不是真的回答你的问题,但我觉得它更好r解决方案。要快速设置:
python3-m venv-venv;source venv/bin/activate;pip install
@MichaelRobinson是的,我正在conda环境中安装它。请查看他们如何使用pyinstaller。如果目录中存在C编译的二进制文件,它只需使用它们。否则它会编译它们在用户计算机上。