如何在特定目录中安装python包
我正在谷歌appengine上开发一个twitter应用程序——为此我想使用Twython库。我尝试使用pip安装它,但它要么在主python目录中安装,要么不导入所有依赖项 我可以简单地将Twython的所有文件复制到appengine根目录,也可以手动导入所有依赖项库,但这似乎大错特错。如何在包含所有依赖项的特定文件夹中安装软件包如何在特定目录中安装python包,python,google-app-engine,twitter,package,twython,Python,Google App Engine,Twitter,Package,Twython,我正在谷歌appengine上开发一个twitter应用程序——为此我想使用Twython库。我尝试使用pip安装它,但它要么在主python目录中安装,要么不导入所有依赖项 我可以简单地将Twython的所有文件复制到appengine根目录,也可以手动导入所有依赖项库,但这似乎大错特错。如何在包含所有依赖项的特定文件夹中安装软件包 感谢使用虚拟环境和虚拟环境包装器,您不必使用包装器,但为了简单起见使用它 如果要使用pip安装软件包,请尝试以下操作: 我个人需要我刚刚使用的git repos
感谢使用虚拟环境和虚拟环境包装器,您不必使用包装器,但为了简单起见使用它
如果要使用pip安装软件包,请尝试以下操作: 我个人需要我刚刚使用的git repos库。我只是用符号链接了那些库,而不是安装它们。但在这种情况下,我还必须手动将所有依赖项进行符号链接。您可以使用gaenv(我为app engine构建的包管理器)。它只创建符号链接,并遵循pip requirements.txt格式。您可以像这样安装和使用:
pip install gaenv
# create requirements.txt -> twython
pip install -r requirements.txt
gaenv
这将创建指向所有必需库的gaenv_lib/的符号链接。然后将要求添加导入语句。如果将模块文件放在目录中,例如
external\u modules/
,然后使用sys.path.insert(0,'external\u modules')
可以将模块作为内部模块包含在内
您必须在第一次导入模块之前调用sys.path.insert
。
示例:如果您将“module.pyd”放置在外部\u modules/
中,并希望将其包含在导入模块
中,则将系统路径插入
放在前面
sys.path.insert()
是应用程序范围内的调用,因此您只需调用一次。最好将其放在主文件中,然后再进行任何其他导入(当然,import sys
除外)。如果您将其放在目录中,例如external\u modules/
,然后使用sys.path.insert(0,'external\u modules')
,这样做有效吗?@TobSpr是项目的根目录吗?我应该在哪里调用sys.path.insert
call?我没有使用google app engine的经验,但是您会在第一次导入模块之前调用sys.path.insert。例如,如果将“module.pyd”放在外部\u modules/
中,并希望执行导入模块
,则将sys.path.insert放在前面。我不知道这是否适用于谷歌应用程序引擎,我是否需要在每个模块中输入其他内容,或者这是一个应用程序范围的调用?这是应用程序范围的调用。最好是在任何其他导入(当然,import sys
除外)发生之前,将其放在主文件中。我曾尝试采用该解决方案,但我觉得我遗漏了一些东西,因为我是一个python noob。我是按照答案的字面意思得到这个错误的:ValueError:invalid variable'$'PREFIX\u PATH'
。将复杂依赖关系树上的每个库进行符号链接似乎是一个非常不可扩展的解决方案:/n您可以指定实际路径,而不是键入$'PREFIX\u path'。将所有软件包安装到给定目录。您可能需要使用后面其他问题中提到的sys.path.insert()技巧。确保安装到的任何路径都在GAE项目中!谢谢,我使用了sys.path.insert()
解决方案。我有点喜欢按原样输入前缀路径:D