【问题标题】:Fatal Python error: Py_Initialize: unable to load the file system codec. ImportError: No module named 'encodings'致命的 Python 错误:Py_Initialize:无法加载文件系统编解码器。 ImportError:没有名为“编码”的模块
【发布时间】:2015-08-26 08:18:02
【问题描述】:

我正在尝试制作简单的 python 程序,它可以打开网页列表,供用户手动从网站下载报告。我以前没有任何准备 exe 文件的经验。我只是在学习 python 编码的过程。所有这些都是在 Windows 7 x64 上完成的

这是我的python代码:

#!C:/Python34/python.exe -u

from splinter import *
import time
import os
import csv

#----------------------------------
raporty = []
with open('../raporty.csv', newline='') as csvfile:
    contents = csv.reader(csvfile, delimiter=' ', quotechar='|')
    for row in contents:
        r = ', '.join(row)
        r = r.replace(',','')
        raporty.append(r)

#--not implemented yet
zmienne = []
with open('../zmienne.csv', newline='') as csvfile:
    contents = csv.reader(csvfile, delimiter=' ', quotechar='|')
    for row in contents:
        r = ', '.join(row)
        r = r.replace(',','')
        zmienne.append(r)

print("start")
browser = Browser()

#----------------LOGIN------------------
browser.visit('https://xxxx')
print(browser.title)
if browser.title == "xxxxxxxxxxxx":
    element = browser.find_by_name('login').first
    element.value = "xxxx"
    element2 = browser.find_by_name('password').first
    element2.value = "xxxx"
    browser.find_by_value('sign in').click()

time.sleep(5)

#----------------------------------
j = 1
for i in raporty:
    webpage = 'webpage_link'
    print("text" + i)
    browser.visit(webpage)
    j += 1

    if j > 15:
        time.sleep(j)
    else:
        time.sleep(12)

我的 setup.py 文件如下所示:

from distutils.core import setup
import py2exe

setup(
    console=['Final.py'],
    options={
            "py2exe":{
                    "skip_archive": True,
                    "unbuffered": True,
                    "optimize": 2,
                    "packages": ["encodings", "splinter"]
            }
    },
)

我必须解决的第一个问题是 selenium 包中缺少文件(webdriver.xpi 和 webdriver_prefs.json),但我在手动编译后成功地将它们包含到 library.rar 文件中。不幸的是,在运行我的文件后我会收到消息:

Fatal Python error: Py_Initialize: unable to load the file system codec
ImportError: No module named 'encodings'

【问题讨论】:

    标签: python encoding exe splinter


    【解决方案1】:

    设置:MAC OSX ANACONDA

    当安装了多个版本的 python 或存在部分删除的环境时会发生这种情况,即仅删除包/安装,而不是路径变量。

    预先检查的事项:

    echo $PYTHONHOME
    echo $PYTHONPATH
    

    如果没有,请通过使用更新您的.bashrc.bash_profile 来设置环境变量

    export PYTHONHOME="/Users/<user>/anaconda3/"
    export PYTHONPATH="${PYTHONHOME}/bin"
    

    要在当前 shell 中设置这些变量,请运行 source .bashrc

    如果这不能解决您的问题,请在您的计算机中搜索名称为“encodings”的文件夹。

    find / -type d -name "encodings" 打印具有名为“encodings”的文件夹的目录列表。

    删除所有不指向正在使用的 python 的目录。

    rm -rf <directory>
    

    【讨论】:

      【解决方案2】:

      我在使用 Python 3.6 安装 Anaconda 时遇到了同样的错误。通过添加指向 Python 安装位置的环境变量“PYTHONPATH”来解决该错误。

      我参考以下链接,

      Py_Initialize fails - unable to load the file system codec

      【讨论】:

      • 未设置 PYTHONHOME 时也可能发生
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-03
      • 2019-06-02
      • 2011-08-07
      • 2019-11-26
      • 2019-08-31
      • 2017-01-03
      • 2020-03-09
      相关资源
      最近更新 更多