当前位置: 首页 > 面试题库 >

在导入语句之前设置pythonpath

段干安和
2023-03-14
问题内容

我的代码是:

import scriptlib.abc
import scriptlib.xyz

def foo():
  ... some operations

但是scriptlib在其他目录中,因此我必须将该目录包含在环境变量“ PYTHONPATH”中。

无论如何,在执行导入语句之前,我首先可以在环境变量“ PYTHONPATH”中添加scriptlib目录,例如:

import sys
sys.path.append('/mypath/scriptlib')
import scriptlib.abc
import scriptlib.xyz

def foo():
  ... some operations

如果是这样,则仅是该命令提示符的值还是全局的?

提前致谢


问题答案:

这将为您的Python进程/实例(即正在运行的可执行文件)添加路径。该路径不会为任何其他Python进程修改。另一个正在运行的Python程序将不会修改其路径,并且如果退出程序并再次运行,则该路径将不包含您之前添加的内容。您在做什么通常是正确的。

set.py:

import sys
sys.path.append("/tmp/TEST")

loop.py

import sys
import time
while True:
  print sys.path
  time.sleep(1)

跑: python loop.py &

这将运行loop.py,并连接到STDOUT,并将继续在后台运行。然后可以运行python set.py。每个都有一组不同的环境变量。观察到的输出loop.py不会改变,因为环境set.py不会改变loop.py

导入说明

像其他语言一样,Python导入是动态的。没有进行静态链接。导入是可执行行,就像一样sys.path.append...



 类似资料:
  • 问题内容: Python使用环境变量来确定应在哪个文件夹中查找模块。您可以通过修改来解决它,这对于纯Python模块非常有效。但是,当模块使用共享的目标文件或静态库时,它会在(在linux上)查找这些文件,但是据我所知,这不能轻易更改,并且依赖于平台。 解决此问题的快速方法当然是设置环境变量或调用像这样的脚本,但是随后您必须为打开的每个新shell再次设置它。同样,在我的情况下,文件将始终与文件位

  • 我有3个不同的TS文件,在1个主TS文件中动态加载2个TS文件,如下所示 现在,在这两个TS文件中,我正在导入jquery和jquery父TS文件 我的tsconfig.json 所以我的问题是jquery文件加载3次还是只加载一次。

  • 我在看stackoverflow的另一页时,遇到了一个循环排序的工作实现,但我不明白在while循环中,带分号的语句如何在大括号之前存在。我认为while循环应该完全终止,一旦找到带有分号的语句,就不会执行进一步的操作,那么大括号中的代码是如何执行的呢?乍一看,我会将其解释为“var”随着while循环的每次迭代而递增——但我知道情况并非如此,因为将其从该点移除并将“var”放在花括号内会导致无限

  • 是否有人使用es2015语法编写jasmine/jest测试?需要多少填隙/填充胶/选区划分? 我无法正确导入函数。我有一个模块:../utils/TweetUtils.js 和一个测试套件: ../../\uuuuu测试\uuuu/TweetUtils-test.js 如果我用这样的东西将控制台输出破解到套件中:

  • 我有一个包含6个表的数据库。这些表是在内容提供商和数据库助手的帮助下创建的。当我使用这6个表运行应用程序时,应用程序工作,所有表都被创建,我可以查询表并插入数据。 但是,当我尝试将sqlite视图添加到我的数据库助手的onCreate方法时,应用程序会崩溃。 据我所知,视图的onCreate方法是在视图的联接中使用的表onCreate方法之前被调用的,无论出于什么原因。 我需要知道的是如何强制我的

  • 问题内容: 我需要进行插入,但是仅当 例如不存在类似记录时: INSERT INTO请求(’user_id’,’subject’,’text’,’time’)值(56,’test’,’test 1234’,6516516) 但要检查另一个记录中是否存在相同的“主题”和“文本”,以: 不插入任何东西 更新“时间”和“ user_id” 对于这两种情况,我都需要使用sql,因为目前还不确定我将使用什么