我正在写一个非常好用的零碎的项目。我已经用pyinstaller把它转换成了一个可执行文件。现在我正期待着一些关于导入模块的麻烦,因为我读到很多人在这方面都有麻烦。但是由于某些原因,我甚至没有走到那一步。只要我运行main.exe文件,控制台就会打开并显示以下消息:
追溯(最近调用最后调用):文件"rascraper\main.py",第1行,
这是对应的www.example.com文件main.py file
from rascraper.spiders.spiderone import PostsSpider
from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings
def main():
process = CrawlerProcess(get_project_settings())
process.crawl(PostsSpider)
process.start()
if __name__ == '__main__':
main()
这是我的蜘蛛课
import scrapy
class PostsSpider(scrapy.Spider):
name = 'posts'
# artist = input(f'Artist Name:')
# filter = input(f'filter on Country? (y/n):')
#
# if filter == 'y':
# country = input(f'Country:')
# start_urls = [
# f'https://ra.co/dj/{artist}/past-events?country={country}'
# ]
#
# elif filter == 'n':
# start_urls = [
# f'https://ra.co/dj/{artist}/past-events'
# ]
HEADERS = {
'accept': '/*',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'nl-NL,nl;q=0.9,en-US;q=0.8,en;q=0.7,fr;q=0.6',
'authorization': 'df67dacc9c704696b908a618dd4f59be',
'cache-control': 'max-age=0',
'content-type': 'application/json',
'origin': 'https://ra.co',
'referer': 'https://ra.co/',
'sec-ch-ua': '"Not_A Brand";v="99", "Google Chrome";v="109", "Chromium";v="109"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': 'Windows',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-site',
}
def parse(self, response):
for post in response.css('li.Column-sc-18hsrnn-0.inVJeD'):
date = post.css('.Text-sc-1t0gn2o-0.jmZufm::text').get()
event = post.css('.Text-sc-1t0gn2o-0.Link__StyledLink-k7o46r-0.dXQVFW::text').get()
location = post.css('.Text-sc-1t0gn2o-0.Link__StyledLink-k7o46r-0.echVma::text').get()
venue = post.css('.Text-sc-1t0gn2o-0.Link__StyledLink-k7o46r-0.dxNiKF::text').get()
acts = post.css('.Text-sc-1t0gn2o-0.bYvpkM::text').get()
item = {}
item['Date'] = date
item['Event'] = event
item['Location'] = location
item['Venue'] = venue
item['Acts'] = acts
yield item
此错误来自何处,如何解决?
1条答案
按热度按时间5ktev3wc1#
要创建单个可执行文件,您需要执行以下步骤:
1.将此添加到所有蜘蛛(source):
在我的示例中,
spider.py
将如下所示:1.将此代码添加到
main.py
(如果不添加此代码,则无论何时尝试从项目目录之外的目录运行可执行文件,都会收到错误):在本例中
main.py
:1.运行pyinstaller以生成规范文件:
python -m PyInstaller --onefile --name example_exe main.py
.1.更改等级库文件:将项目中的所有文件添加到
datas
列表中。之前:
之后:
1.构建等级库文件:
python -m PyInstaller example_exe.spec
现在应该有一个独立的可执行文件,您可以在任何目录中运行:
项目树如下所示:
因此
datas
列表应该是:main.py
中,它应仅为os.environ.setdefault('SCRAPY_SETTINGS_MODULE', 'settings')
。