2017-02-17 1 views
0

.exe 파일로 변환하려는 .py 파일이 있습니다. 나는 그것을 변환하기 위해 cx_Freeze를 사용했다. 내가 .exe 파일을 실행하기 위해 노력하고있어 때 변환 후에는cx_Freeze를 사용하여 .py 파일을 .exe 파일로 변환하는 중 오류가 발생했습니다.

H:\Python\Practice\Download Bollywood Song\build\exe.win32-3.5>cmd /K "download_bollywood_song.exe" 
Traceback (most recent call last): 
    File "C:\Program Files\Anaconda3\lib\site-packages\requests\packages\__init__.py", line 27, in <module> 
from . import urllib3 
    File "C:\Program Files\Anaconda3\lib\site-packages\requests\packages\urllib3\__init__.py", line 8, in <module> 
from .connectionpool import (
    File "C:\Program Files\Anaconda3\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 28, in <module> 
from .packages.six.moves.queue import LifoQueue, Empty, Full 
    File "C:\Program Files\Anaconda3\lib\site-packages\requests\packages\urllib3\packages\six.py", line 203, in load_module 
mod = mod._resolve() 
    File "C:\Program Files\Anaconda3\lib\site-packages\requests\packages\urllib3\packages\six.py", line 115, in _resolve 
return _import_module(self.mod) 
    File "C:\Program Files\Anaconda3\lib\site-packages\requests\packages\urllib3\packages\six.py", line 82, in _import_module 
__import__(name) 
ImportError: No module named 'queue' 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "C:\Program Files\Anaconda3\lib\site-packages\cx_Freeze\initscripts\__startup__.py", line 12, in <module> 
__import__(name + "__init__") 
    File "C:\Program Files\Anaconda3\lib\site-packages\cx_Freeze\initscripts\Console.py", line 24, in <module> 
exec(code, m.__dict__) 
    File "download_bollywood_song.py", line 10, in <module> 
    File "C:\Program Files\Anaconda3\lib\site-packages\requests\__init__.py", line 63, in <module> 
from . import utils 
    File "C:\Program Files\Anaconda3\lib\site-packages\requests\utils.py", line 24, in <module> 
from ._internal_utils import to_native_string 
    File "C:\Program Files\Anaconda3\lib\site-packages\requests\_internal_utils.py", line 11, in <module> 
from .compat import is_py2, builtin_str, str 
    File "C:\Program Files\Anaconda3\lib\site-packages\requests\compat.py", line 11, in <module> 
from .packages import chardet 
    File "C:\Program Files\Anaconda3\lib\site-packages\requests\packages\__init__.py", line 29, in <module> 
import urllib3 
ImportError: No module named 'urllib3' 

H:\Python\Practice\Download Bollywood Song\build\exe.win32-3.5> 

나는 "큐"모듈 pip install queue 명령을 사용하여 설치하려고 오류 - 다음 보여줍니다. 그러나 오류 -

Microsoft Windows [Version 6.1.7600] 
Copyright (c) 2009 Microsoft Corporation. All rights reserved. 

C:\Users\USER PC>pip install queue 
Collecting queue 
    Could not find a version that satisfies the requirement queue (from versions:) 
No matching distribution found for queue 

C:\Users\USER PC> 

방법이 문제를 해결하기 위해 다음과 같은 보여줍니다 ?? 윈도우 7 32 비트에서 파이썬 3.5를 사용하고 있습니다.

EDIT 다음은 .exe 파일로 변환하려는 코드입니다.

import time; 
import requests; 
from bs4 import BeautifulSoup; 

def get_page(url): 

    response = requests.get(url); 
    html = response.text; 
    return html; 

def make_soup(html): 

    soup = BeautifulSoup(html,"html.parser"); 
    return soup; 

def get_movie_link(words): 

    movie_name = ""; 
    first = True; 

    for word in words: 
     if(not first): 
      movie_name+=" "; 
     first = False; 
     movie_name+=word; 

    movie_link = ""; 
    movie_name = movie_name.title(); 
    first_character = movie_name[0]; 

    url = "http://songsmp3.co/1/bollywood-music/list-" + first_character + ".html"; 
    html = get_page(url); 
    soup = make_soup(html); 
    movie_list = soup.find_all("div",class_="list_inside_box"); 
    movies = []; 

    for movie in movie_list: 
     movies = movie.find_all("a"); 
    for movie in movies: 
     name = movie.get_text(); 
     link = movie.get("href"); 
     if(name.find(movie_name) > -1): 
      movie_link = link; 
      break; 
    return movie_name,movie_link; 

def get_download_link(movie_name,movie_link): 

    if(movie_link == ""): 
     return movie_link; 
    if(movie_link.find("http://songsmp3.co") == -1): 
     movie_link = "http://songsmp3.co" + movie_link; 

    html = get_page(movie_link); 
    soup = make_soup(html); 
    links = soup.find_all("div",class_="link-item-zip"); 

    download_link = ""; 
    for link in links: 
     data = link.find("a"); 
     song_link = data.get("href"); 
     if(download_link == ""): 
      download_link = song_link; 

    return download_link; 

def download_songs(movie_name,download_link): 

    if(download_link == ""): 
     return; 

    file_name = movie_name + ".zip"; 
    response = requests.get(download_link, stream=True); 
    file = open(file_name, "wb"); 
    file.write(response.content); 
    file.close(); 
    return; 

start_time = time.clock(); 
#print("N.B: Becareful about spelling."); 
words = input().split(); 

movie_name,movie_link = get_movie_link(words); 
download_link = get_download_link(movie_name,movie_link); 
download_songs(movie_name,download_link); 

end_time = time.clock(); 
print("Execution Time: %.2f"%(end_time-start_time)); 

그리고 여기 그것은 진짜 문제는 여기에 실제 코드를 붙여없이 무엇인지 말해 어렵다

from cx_Freeze import setup, Executable; 

setup(name="Download Bollywood Song",version="1.0.1",description="Download specified movie songs", 
     executables=[Executable("download_bollywood_song.py")]); 
+0

모든 솔루션 ?? : –

답변

1

코드 - 내 setup.py 파일입니다.

사실 파이썬 3.x에서는 대신 Queue이 있습니다. (시도 from multiprocessing import Queue). 다른 simillar 스레드에 지정된대로, 일을 시도 :

import requests 
from multiprocessing import Queue 

을 그리고 urllib3 모듈 제거하기. requests은 달성하려는 모든 작업을 수행 할 수도 있습니다.

자세한 내용은 작업 디렉토리에 queue.py이 없는지 확인하십시오.

최후의 수단으로 나는 항상 pyinstaller으로 더 쉽게 작업 할 수 있다고 생각했습니다.

+0

내 코드를 추가했고 작업 디렉토리에 queue.py 파일이 없습니다. 이미 요청을 사용하고 있습니다. urllib3 @ Dexter –

+0

@Dex-ter pyinstaller를 제안 해 주셔서 감사합니다. 시원하고 사용하기 쉽습니다. : D –

+0

당신은 오신 것을 환영합니다 :) –

관련 문제