如何";包括「;将第三方模块插入我的python脚本以使其可移植?

如何";包括「;将第三方模块插入我的python脚本以使其可移植?,python,Python,我开发了一个小脚本,可以在线搜索墙纸数据库并下载墙纸,我想把这个脚本给另一个不太擅长计算机的人,我从python开始,所以我不知道如何在我的程序中包含第三方模块的“导入”,这样它就可以100%可移植,有什么可以帮我做的吗?否则,我将不得不输入并分析我的第三方模块,并复制和粘贴我使用的功能?更糟糕的事情 您可以简单地将其他模块与代码捆绑在一起。这并不意味着你应该将其他模块的函数复制/粘贴到你的代码中——你肯定应该这样做,因为你不知道你会缺少什么依赖项。您的目录结构可能如下所示: /myprojec

我开发了一个小脚本,可以在线搜索墙纸数据库并下载墙纸,我想把这个脚本给另一个不太擅长计算机的人,我从python开始,所以我不知道如何在我的程序中包含第三方模块的“导入”,这样它就可以100%可移植,有什么可以帮我做的吗?否则,我将不得不输入并分析我的第三方模块,并复制和粘贴我使用的功能?

更糟糕的事情 您可以简单地将其他模块与代码捆绑在一起。这并不意味着你应该将其他模块的函数复制/粘贴到你的代码中——你肯定应该这样做,因为你不知道你会缺少什么依赖项。您的目录结构可能如下所示:

/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
    。这将安装包管理器
  • 给您的朋友一个清单,列出您在代码中使用的第三方Python模块的名称。在本例中,我们假设您使用了
    请求
    扭曲
    、和
    boto
  • 您的朋友应该从命令行
    $pip install
    运行。在我们的示例中,这看起来像是
    $pip安装请求twisted boto
  • 运行Python代码!像import boto这样的行应该可以工作,因为您的朋友将在他们的计算机上安装软件包
  • easi(er)方式:

  • 从一个干净的开始
  • 安装开发代码所需的软件包
  • 完成后,为项目创建一个
  • 将此文件(步骤3)发送给您的朋友
  • 您的朋友只需执行
    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)不再存在。想更新你的答案吗?