解決したいこと
ImportError: cannot import name '_MeCab' from partially initialized module 'MeCab' (most likely due to a circular import) が出る
試したこと
MeCabの再インストール
心当たりのある原因
自身のPC上ではなくMAMP上でやっていること。
PHPからPythonを呼び出して実行していること
(MAMP上にアップロードしたPythonファイルを実行した場合は正常に動作する)
編集・追記依頼に関して気づいたこと
どうやら、MAMP上で実行することが原因ではなく、Python3.8.2で実行することが原因と判明しました
以下にコードを書いておきます
PHP
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <title>Document</title> 8</head> 9<body> 10 <?php 11 12 $command="python3 (下記のpythonファイルのファイル名).py "; 13 if(isset($_POST['add'])) { 14 exec($command,$outputs); 15 16 foreach ($outputs as $o) { 17 echo $o . '<br>'; 18 } 19 } 20 ?> 21 <form action="mojya.php" method="post"> 22 <input type="submit" name="add" value="生成開始" /> 23</form> 24</body> 25</html>
Python
1#!/usr/local/bin/python3 2 3 4import sys 5import io 6sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') 7sys.path.append('/usr/local/lib/python3.9/site-packages') 8print("Content-type: text/html; charset=utf-8\n\r\n") 9print("") 10import markovify 11import MeCab 12import re 13 14# Load file 15text_file = open("input.txt", "r") 16text = text_file.read() 17 18# Parse text using MeCab 19parsed_text = MeCab.Tagger('-Owakati').parse(text) 20parsed_text = parsed_text.replace(' ', ' ') 21parsed_text = re.sub(r'(.+。) (.+。)', r'\1 \2\n', parsed_text) 22parsed_text = re.sub(r'\n +', '\n', parsed_text) # Spaces 23parsed_text = re.sub(r'([。.!?…])\n」', r'\1」 \n', parsed_text) # \n before 」 24parsed_text = re.sub(r'\n +', '\n', parsed_text) # Spaces 25parsed_text = re.sub(r'\n+', r'\n', parsed_text).rstrip('\n') # Empty lines 26parsed_text = re.sub(r'\n +', '\n', parsed_text) # Spaces 27parsed_text = parsed_text.replace('。','\n') 28# Build model 29text_model = markovify.NewlineText(parsed_text, state_size=2,well_formed=False) 30 31 32print(text_model.make_short_sentence(100).replace(' ', ''))
回答1件
あなたの回答
tips
プレビュー