一、首先看看目录的结构:
二、我在searchpy中导入views包下的productionpy和searchpy,运行searchpy的时候直接报错找不到views包,其实问题就在于包的搜索路径,因为是在flaskr这个目录下运行的,打印出来的包搜索路径为(['/project/my_flask_project/flaskr', '/usr/local/python3/lib/python36zip', '/usr/local/python3/lib/python36', '/usr/local/python3/lib/python36/lib-dynload', '/usr/local/python3/lib/python36/site-packages']),解释器会把/project/my_flask_project/flaskr加入导搜索路径,自然导包的时候,也会在这个路径下搜索,找不到就报错。
三、所以,知道问题所在了,只需要把这个项目的路径加入到搜索路径即可
syspathappend(ospathabspath(''))
这个 *** 作是把当前目录的上一级目录添加到包搜索路径中,这样问题就解决了
Copyright © 1999-2020, CSDNNET, All Rights Reserved
python
打开APP
pergoods
关注
Python多线程爬取网站image的src属性实例 原创
2017-05-16 11:18:51
pergoods
码龄6年
关注
# coding=utf-8
'''
Created on 2017年5月16日
@author: chenkai
Python多线程爬取某单无聊图地址(requests+BeautifulSoup+threading+Queue模块)
'''
import requests
from bs4 import BeautifulSoup
import threading
import Queue
import time
class Spider_Test(threadingThread):
def __init__(self,queue):
threadingThread__init__(self)
self__queue = queue
def run(self):
while not self__queueempty():
page_url=self__queueget() [color=red]#从队列中取出url[/color]
print page_url
selfspider(page_url)
def spider(self,url):
r=requestsget(url) [color=red]#请求url[/color]
soup=BeautifulSoup(rcontent,'lxml') [color=red]#rcontent就是响应内容,转换为lxml的bs对象[/color]
imgs = soupfind_all(name='img',attrs={}) #查找所有的img标签,并获取标签属性值(为列表类型)
for img in imgs:
if 'onload' in str(img): [color=red]#img属性集合中包含onload属性的为动态图gif,[/color]
print '>
py文件,文件存在E盘下的LearnPython文件夹里面。
Python可应用于多平台包括Linux和MacOSX。您需要下载适用于您使用平台的二进制代码,然后安装Python。如果您平台的二进制代码是不可用的,你需要使用C编译器手动编译源代码。编译的源代码,功能上有更多的选择性,为python安装提供了更多的灵活性。
运行方法:
1我的python文件夹在d盘,python_work文件夹保存在python文件夹中
2先''d:''转到d盘,再cd转换路径到python_work
3此时显示目标路径,再dir浏览文件夹下各项目
4手打其中的helloworldpy文件名可运行
1win10 下 win + r 打开cmd 切换新项目的目录
2新建scrapy项目的命令:
可以利用pycharm 打开项目文件夹编辑项目
3itemspy
声明爬取的字段
4新建scrapy 爬虫
用命令 scrapy genspider doubanmovie "moviedoubancom" 创建爬虫。
5运行爬虫
51 创建运行脚本
(一)、在 scrapycfg 同级目录下创建 pycharm 调试脚本 runpy,避免每次运行爬虫输入密码,内容如下:
6修改robottxt协议
修改 settings 中的 ROBOTSTXT_OBEY = True 参数为 False,因为默认为 True,就是要遵守 robotstxt 的规则, robotstxt 是遵循 Robot协议 的一个文件,它保存在网站的服务器中,它的作用是,告诉搜索引擎爬虫,本网站哪些目录下的网页不希望你进行爬取收录。在 Scrapy 启动后,会在第一时间访问网站的 robotstxt 文件,然后决定该网站的爬取范围。查看 robotstxt 可以直接网址后接 robotstxt 即可。
一般构建爬虫系统,建议自己编写Item Pipeline,就可以在open(path)选择自己的保存路径
参考: # scrapy爬虫事件以及数据保存为txt,json,mysql
71保存为json格式时出现乱码的解决方式:
scrapy抓取豆瓣书籍保存json文件乱码问题
中文默认是Unicode,如:
\u5317\u4eac\u5927\u5b66
在setting文件settingspy中设置:
就可以解决了
第二种解决办法
或在cmd中传入 -s FEED_EXPORT_ENCODING='utf-8'
参考: >
在PyCharm中,可以使用以下路径来访问shell:
1 打开PyCharm,进入菜单栏的"File",选择"Settings"。
2 在左边的面板中,选择"Project",然后选择"Project Interpreter"。
3 在右边的面板中,选择你想要设置的Python解释器,然后点击下方的"Show All"按钮。
4 找到"Interpreter Paths"选项,点击旁边的"+"按钮。
5 在d出的对话框中,输入你想要使用的shell路径,并点击"OK"。
6 点击"Apply"和"OK"按钮保存更改。
在设置完成后,你可以使用PyCharm的Terminal功能来访问shell。打开Terminal的方法是在菜单栏中选择"View",然后选择"Tool Windows",然后选择"Terminal"。
Python
会自动从
syspath
路径列表里的所有路径里寻找你要
import
的模块,这个路径列表可以通过在终端里输入以下命令查看:
import
sys
syspath
如果要调用其他路径的文件,可以先在上述列表中加入新的路径,以你提到的情况为例:
import
sys
syspathinsert(0,
'/')
import
test
一般一个项目的所有文件应该在同一个项目文件夹中吧,此时有其他解决办法比如在项目的下级目录里放置
__init__py
文件,然后用
from
文件夹
import
文件名
的方式来引入模块。其实我是菜鸟,等高手修正。
1python文件保存之后默认的文件类型都是py,而py文件直接双击去点它的话是不能够将其打开的,而是会出现提示找不到可以打开这个文件的应用程序。
这是因为python在安装之后虽然会带一个默认的编辑器IDLE以及解释器pythonexe,但是这两个程序都不是python文件的默认打开方式和执行方式。
2所以要打开保存后的python文件的话有两种方式,第一种就是右键它然后选择打开方式,在打开方式里面选择记事本这个应用程序将其打开就行,因为python文件实际上也是一个文本类型文件。如果不用记事本的话就需要点击其他程序,然后找到pycharm或者是IDLE之类的python编辑器来将其打开了。
第二种方式的话就是将py后缀改成pyw后缀,这样它就会被视为经过编译后的python文件,双击的话会直接调用默认文本编辑器打开它
3如果是要打开python文件并且运行的话也有几种方式,打开python编辑器然后将python文件拖进去就能自动将其打开,然后按下shift+F10快捷键就能运行python文件了。
相对路径是相对脚本文件来的。
比如脚本在C:/python目录下,相同目录下有一个文件叫testtxt
那么绝对路径就是 C:/python/testtxt,相对路径就是testtxt
使用脚本 open('C:/python/testtxt','r') 和 open('testtxt','r')效果都是一样的
我们可以多做几次试验,把”Exampleclass”移动到不同路径下,同时在那些路径下,执行”java Example”命令启动jvm,我们会发现这个”当前用户目录”是不断变化的,它的路径始终和我们在哪启动jvm的路径是一致的
搞清了这些,我们可以使用相对路径来创建文件,例如:
File file = new File(“atxt”);
FilecreateNewFile();
假设jvm是在”D:\”下启动的,那么atxt就会生成在D:\atxt;
此外,这个参数还可以使用一些常用的路径表示方法,例如””或”\”代表当前目录,这个目录也就是jvm启动路径所以如下代码能得到当前目录完整路径:
File f = new File(“”);
String absolutePath = fgetAbsolutePath();
Systemoutprintln(absolutePath);//D:\
最后要说说在eclipse中的情况:
Eclipse中启动jvm都是在项目根路径上启动的比如有个项目名为blog,其完整路径为:D:\work\IDE\workspace\blog那么这个路径就是jvm的启动路径了所以以上代码如果在eclipse里运行,则输出结果为” D:\work\IDE\workspace\blog”
以上就是关于解决python3在项目目录下找不到包(No module named 'views')全部的内容,包括:解决python3在项目目录下找不到包(No module named 'views')、python如何才能获取src地址、D:\PYTHON\DATA\EXERCISE\HOME.PY是什么路径文件名等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)