如何";包括「;将第三方模块插入我的python脚本以使其可移植?
我开发了一个小脚本,可以在线搜索墙纸数据库并下载墙纸,我想把这个脚本给另一个不太擅长计算机的人,我从python开始,所以我不知道如何在我的程序中包含第三方模块的“导入”,这样它就可以100%可移植,有什么可以帮我做的吗?否则,我将不得不输入并分析我的第三方模块,并复制和粘贴我使用的功能?更糟糕的事情 您可以简单地将其他模块与代码捆绑在一起。这并不意味着你应该将其他模块的函数复制/粘贴到你的代码中——你肯定应该这样做,因为你不知道你会缺少什么依赖项。您的目录结构可能如下所示:如何";包括「;将第三方模块插入我的python脚本以使其可移植?,python,Python,我开发了一个小脚本,可以在线搜索墙纸数据库并下载墙纸,我想把这个脚本给另一个不太擅长计算机的人,我从python开始,所以我不知道如何在我的程序中包含第三方模块的“导入”,这样它就可以100%可移植,有什么可以帮我做的吗?否则,我将不得不输入并分析我的第三方模块,并复制和粘贴我使用的功能?更糟糕的事情 您可以简单地将其他模块与代码捆绑在一起。这并不意味着你应该将其他模块的函数复制/粘贴到你的代码中——你肯定应该这样做,因为你不知道你会缺少什么依赖项。您的目录结构可能如下所示: /myprojec
/myproject
mycode.py
thirdpartymodule1.py
thirdpartymodule2.py
thirdpartymodule3/
<contents>
/myproject
mycode.py
第三方模块1.py
第三方模块2.py
第三部分模块3/
更好的事情
真正最好的方法是在Python包中包含一个依赖项列表(通常称为requirements.txt
),Python包安装程序可以使用该列表自动下载。因为这可能有点太复杂了,假设Mac或Linux,您可以给您的朋友以下说明:
$curlhttp://python-distribute.org/distribute_setup.py |python
。这为您提供了安装软件包管理器所需的工具$curlhttps://raw.github.com/pypa/pip/master/contrib/get-pip.py |python
。这将安装包管理器请求
、扭曲
、和boto
$pip install
运行。在我们的示例中,这看起来像是$pip安装请求twisted boto
pip安装-r thefile.txt
即可获得应用程序的所有需求
下面是一个例子:
D:\>virtualenv --no-site-packages myproject
The --no-site-packages flag is deprecated; it is now the default behavior.
New python executable in myproject\Scripts\python.exe
Installing setuptools................done.
Installing pip...................done.
D:\>myproject\Scripts\activate.bat
(myproject) D:\>pip install requests
Downloading/unpacking requests
Downloading requests-0.14.1.tar.gz (523Kb): 523Kb downloaded
Running setup.py egg_info for package requests
warning: no files found matching 'tests\*.'
Installing collected packages: requests
Running setup.py install for requests
warning: no files found matching 'tests\*.'
Successfully installed requests
Cleaning up...
(myproject) D:\>pip freeze > requirements.txt
(myproject) D:\>type requirements.txt
requests==0.14.1
您可能应该注意到这是假设Windows的,它在virtualenv可用的地方工作(基本上,在Python可用的地方);它不是特定于Windows的。virtualenv确实是,但您的命令行命令是特定于Windows的(
type
,myproject\Scripts\activate.bat
,等等),鉴于这是一个新手的问题,我不希望以后的读者对如何调用virtualenv感到困惑。该域(python distribute.org)不再存在。想更新你的答案吗?