web-dev-qa-db-ja.com

致命的Pythonエラー:Py_Initialize:ファイルシステムコーデックを読み込めません。ImportError: 'encodings'という名前のモジュールがありません

ユーザーがサイトからレポートを手動でダウンロードするためのWebページのリストを開く単純なpythonプログラムを作成しようとしています。exeファイルの準備については、これまでの経験がありません。 pythonコーディングの学習プロセス中です。これはすべて、Windows 7x64で実行されます。

これは私の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'
7
Kusnierewicz

Python 3.6でAnacondaをインストールすると、同じエラーが発生します。このエラーは、Pythonのインストール場所を指す環境変数 "PYTHONPATH"を追加することで解決されます。

私は次のリンクを参照します、

Py_Initializeが失敗します-ファイルシステムコーデックをロードできません

anacondapython

3
Ken Li

セットアップ:MAC OSX ANACONDA

pythonインストール済みまたは部分的に削除された環境が存在する場合、つまりパス変数ではなくパッケージ/インストールを削除するだけの場合に発生します。

事前に確認すること:

1. echo $PYTHONHOME
2. echo $$PYTHONPATH

そうでない場合は、.bashrcまたは.bash_profileを使用して更新して環境変数を設定します。

1. export PYTHONHOME="/Users/<user>/anaconda3/""
2. export PYTHONPATH=$PYTHONHOME/bin

そしてさらに試みる。これで問題が解決しない場合は、マシンにリストされている「encodings」という名前のフォルダーを検索してください。

find / -type d -name "encodings"これは「encodings」という名前のフォルダを持つディレクトリのリストを出力します。

使用中のpython)を指していないすべてのディレクトリを削除します。

rm -rf <directory>

1