python - Python 库 - 让它们在非我的 PC 上工作
问题描述
如果这是一个非常愚蠢的问题,我深表歉意,但我是 python 新手,虽然我做了一些谷歌搜索,但我想不出如何表达我的搜索查询。
我正在编写一个依赖于一些库(pandas、numpy 等)的 python 脚本。在将来的某个时候,我会将这个脚本传递给我的大学,以便他们可以标记它等。我相当有信心讲师会在他们的 PC 上安装 python,但我不能确定他们是否会有相关的库。
我在脚本顶部包含了一个注释部分,概述了每个库的安装说明,但是有没有更好的方法来做到这一点,所以我可以确保脚本不管它们有什么库都可以工作?
我的脚本头示例
############### - Instructions on how to import libraries - ###############
#using pip install openpyxl using the command - pip install openpyxl
#########################################################################
import openpyxl
import random
import datetime
解决方案
分发代码是一个巨大的章节,您可以根据当前的最佳实践和其他最佳实践,投入大量时间来把事情做好。我认为你的问题的解决方案有不同程度的正确性,更多的正确性意味着更多的工作。所以你必须选择你觉得舒服并且很适合去的学位。
最佳路线
Python 支持打包,分发代码最安全的方式就是打包。这允许您以安装代码将自动安装所有依赖项的方式指定要求。
您可以使用现有的 cookiecutters(项目模板)来创建构建包所需的基础:
pip install cookiecutter
cookiecutter https://github.com/audreyr/cookiecutter-pypackage
运行此程序并回答随后的问题,将为您留下可以打包的 python 代码。您可以将所需的包添加到setup.py
文件中:
requirements = ['openpyxl']
然后在源目录下添加脚本并使用以下命令构建包:
pip wheel .
假设你调用了你的项目my_script
,你得到了一个新my_script-0.1.0-py2.py3-none-any.wheel
文件,你可以发送给你的讲师。当他们使用 , 安装它时pip
,openpyxl
将自动安装,以防它尚未安装。
不幸的是,如果他们也应该能够执行您的代码,那么您还没有完成。您需要在打包之前将文件添加到__main__.py
文件my_script
夹中,在该文件夹中导入并执行可运行的代码部分:
我的脚本/我的脚本/__main__.py:
from . import runnable_script
if __name__ == '__main__':
runnable_script.run()
然后可以将安装的软件包作为模块运行python -m my_script
下一个最佳路线
如果您真的只有一个文件,并且想与您的讲师交流运行脚本所需的要求,请将您的脚本和一个名为 的文件发送给他们,该文件requirements.txt
包含以下几行:
openpyxl
..就是这样。如果还有其他要求,请将它们放在单独的行中。如果讲师花费了任何时间使用 python,他们应该知道运行pip install -r requirements.txt
将安装运行您提交的代码所需的要求。
如果你真的不得不去路线
如果您的讲师只知道如何输入python
脚本名称,请使用DudeCoders 方法。但是请注意,在软件工程领域中,即使没有向用户提供交互式提示,也可以静默安装需求是一个巨大的禁忌。如果您打算从事编程工作,您应该尽早开始使用良好的实践。
推荐阅读
- ssl - 在 IOT 设备上更新 SHA-1 指纹的方法
- html - css flex box 将文本中心与其下方的按钮对齐
- laravel - 有没有办法从另一台电脑访问我的本地项目
- ruby - 为什么 gem list 显示 gem 已安装,但 gem 在尝试执行时未“找不到”(捆绑程序)
- python - PyAudio 错误:[Errno -9986] 无法获取流信息
- html - 如何呈现存储为字符串的 html 代码?
- pandas - 以相同的指定顺序制作 pandas.plot 图例和堆栈
- python - 提取列表中多行字符串的最后一行
- python - 如何将 torch.cuda.is_available() 的结果更改为 True GTX 1050ti
- python - 试图将 Python 字典放入 CSV 文件