pythonpath和pythonhome

有时候,经常会出现类似于如下错误:

Python path configuration:
  PYTHONHOME = (not set)
  PYTHONPATH = (not set)
  program name = 'E:\sd-webui-aki-v4\py310\python.exe'
  isolated = 0
  environment = 1
  user site = 1
  import site = 1
  sys._base_executable = '\u3070L'
  sys.base_prefix = 'E:\\sd-webui-aki-v4\\py310'
  sys.base_exec_prefix = 'E:\\sd-webui-aki-v4\\py310'
  sys.platlibdir = 'lib'
  sys.executable = '\u3070L'
  sys.prefix = 'E:\\sd-webui-aki-v4\\py310'
  sys.exec_prefix = 'E:\\sd-webui-aki-v4\\py310'
  sys.path = [
    'E:\\sd-webui-aki-v4\\.launcher\\pyinterop.hfkx1kkk0g4q7.zip',
    'E:\\sd-webui-aki-v4',
    'E:\\sd-webui-aki-v4\\py310\\python310.zip',
    'E:\\sd-webui-aki-v4\\py310\\DLLs',
    'E:\\sd-webui-aki-v4\\py310\\lib',
    '',
  ]
Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding
Python runtime state: core initialized
Traceback (most recent call last):
  File "<frozen importlib._bootstrap_external>", line 1372, in _path_importer_cache
KeyError: 'E:\\sd-webui-aki-v4\\.launcher\\pyinterop.hfkx1kkk0g4q7.zip'
提示:Python 运行时抛出了一个异常。请检查疑难解答页面。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<frozen zipimport>", line 93, in __init__
KeyError: 'E:\\sd-webui-aki-v4\\.launcher\\pyinterop.hfkx1kkk0g4q7.zip'
提示:Python 运行时抛出了一个异常。请检查疑难解答页面。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1002, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 945, in _find_spec
  File "<frozen importlib._bootstrap_external>", line 1439, in find_spec
  File "<frozen importlib._bootstrap_external>", line 1408, in _get_spec
  File "<frozen importlib._bootstrap_external>", line 1374, in _path_importer_cache
  File "<frozen importlib._bootstrap_external>", line 1350, in _path_hooks
  File "<frozen zipimport>", line 95, in __init__
  File "<frozen zipimport>", line 518, in _read_directory
  File "<frozen importlib._bootstrap_external>", line 104, in _path_join
SystemError: Negative size passed to PyUnicode_New
提示:Python 运行时抛出了一个异常。请检查疑难解答页面。

--------

[程序崩溃,退出代码为 1 (0x00000001)]

 

都是未正确设置 PYTHONHOME和PYTHONPATH,下面就来谈谈它们。

 

在Python中,PYTHONHOME和PYTHONPATH是两个环境变量,它们可以用来控制Python解释器的行为。以下是使用PYTHONHOME和PYTHONPATH的完整攻略:

 

一、什么是 PYTHONHOME?

PYTHONHOME是一个环境变量,它指定了解释器的安装路径。如果没有设置PYTHONHOME,Python解释会在默认的安装路径中查找模块和库。可以通过设置PYTHONHOME来指定其他的Python安装路径。

 

以下是一个示例代码:

export PYTHONHOME=/usr/local/python3.9

上面的代码将PYTHONHOME设置为 /usr/local/python3.9,这是Python 3.9的安装路径。在这个路径下,Python解释器会查找模块和库。

 

二、什么是 PYTHONPATH?

PYTHONPATH是一个环境变量,它指定了Python解释器查找模块和库的路径。如果没有设置PYTHONPATH,Python解释器会在默认的路径中查找模块和库。可以通过设置PYTHONPATH来指定其他的模块和库路径。

 

以下是一个示例代码:

export PYTHONPATH=/path/to/my/modules:/path/to/my/libraries

上面的代码将PYTHONPATH设置为/path/to/modules:/path/to/my/libraries,这是自定义的模块和库路径。在这些路径下,Python解释器会查找模块和库。

 

三、PYTHONHOME 环境变量

Pythonhome 是一个环境变量,用于指定 Python 解释器的安装路径。在某些情况下,你可能需要手动设置这个环境变量,以确保程序能够正确地找到 Python 解释器。

 

1、为什么需要设置 Pythonhome?

在默认情况下,操作系统会自动找到 Python 解释器的安装路径。但是,在某些情况下,可能需要使用不同版本或自定义版本的 Python 解释器。例如:

你的系统上安装了多个版本的 Python,你希望指定某个特定的版本作为默认解释器。

你希望使用虚拟环境管理工具(如venv)创建和管理不同的 Python 环境。

你希望使用自定义版本的 Python 解释器,而不是系统默认的安装版本。

在这些情况下,你可以通过设置 Pythonhome 环境变量来告诉操作系统要使用哪个 Python 解释器。

 

2、设置 Pythonhome

在不同的操作系统上,设置 Pythonhome 的步骤可能会有所不同。下面以常见的 Windows 和 Linux 系统为例进行说明。

 

在 Windows 上设置 Pythonhome

在 Windows 上,可以通过以下步骤设置 Pythonhome 环境变量:

首先,打开“控制面板”并进入“系统和安全”。

点击“系统”并选择“高级系统设置”。

在弹出的对话框中,点击“环境变量”按钮。

在“系统变量”部分,点击“新建”按钮。

输入变量名为PYTHONHOME,变量值为 Python 解释器的安装路径。例如C:\Python39。

点击“确定”保存设置。

 

在 Linux 上设置 Pythonhome

在 Linux 上,可以通过以下步骤设置 Pythonhome 环境变量:

打开终端,并使用任意文本编辑器打开.bashrc文件。例如使用nano编辑器:nano ~/.bashrc。

在文件的末尾添加以下行:

export PYTHONHOME=/usr/local/python3.9

这里的/usr/local/python3.9是你的 Python 解释器的安装路径。

保存文件并退出编辑器。

在终端中执行以下命令,使设置生效:

source ~/.bashrc

 

PYTHONPATH环境变量同理,这里就先不讲了。

 

四、使用PYTHONHOME

假设我们有两个版本的Python,一个是Python 3.8,另一个是Python 3.9。我们想要在同一台机器上同时使用这两个版本的Python。可以将Python 3.8安装在默认路径下将Python 3.9安装在自定义路径下,并PYTHONHOME为Python 3.9的安装路径。以下是一个示例代码:

export PYTHONHOME=/usr/local/python3.9
/usr/local/python3.8/bin/python3.8 myscript.py

上面的代码将PYTHONHOME设置为/usr/local/python39,并使用 3.8解释器运行myscript.py脚本。由于PYTHONHOME被设置为Python 3.9的安装路径,Python解释器会在这个路径下查找模块和库。

 

五、使用PYTHONPATH

设我们有自定义的Python模块,它的路径为/path/to/my/modules。我们想要Python脚本中使用这个模块,但是Python解释器无法找到这个模块。可以设置PYTHONPATH为模块的路径,让Python解释器能够找到这个模块。以下是一个示例代码:

import os
import sys

os.environ['PYTHONPATH'] = '/path/to/my/modules'
sys.path.append('/path/to/my/modules')

import mymodule

上面的代码将PYTHONPATH设置为/path/to/my/modules,并将模块的路径添加到sys.path中。这样,Python释器就能够找到mymodule模块了。

 

总结:

PYTHONHOME和PYTHONPATH是两个环境变量,它们可以用来控制Python解释器的行为。

PYTHONHOME指定了解释器的安装路径。

PYTHONPATH指定了Python解释器查找模块和的路径。

可以通过设置PYTHONHOME和PYTHONPATH来自定义Python解释器的行为。

可以在命令行中使用export命令来设置环境变量。

可以在Python脚本中使用os.environ和sys.path来获取和设置环境变量的值。

    A+
发布日期:2023年08月09日 19:11:47  所属分类:Python
最后更新时间:2023-08-09 19:11:47
付杰
  • ¥ 69.0元
  • 市场价:69.0元
  • ¥ 98.0元
  • 市场价:398.0元
  • ¥ 79.0元
  • 市场价:99.0元
  • ¥ 0.0元
  • 市场价:99.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: