在本文中,我们将给您介绍关于从本地目录导入python包到解释器的详细内容,并且为您解答python导入目录下的文件的相关问题,此外,我们还将为您提供关于、Mac下Pycharm导入Python包、P
在本文中,我们将给您介绍关于从本地目录导入python包到解释器的详细内容,并且为您解答python导入目录下的文件的相关问题,此外,我们还将为您提供关于<编译原理 - 函数绘图语言解释器(3)解释器 - python>、Mac下Pycharm导入Python包、Pycharm中导入Python包的方法、pycharm导入python包的知识。
本文目录一览:- 从本地目录导入python包到解释器(python导入目录下的文件)
- <编译原理 - 函数绘图语言解释器(3)解释器 - python>
- Mac下Pycharm导入Python包
- Pycharm中导入Python包的方法
- pycharm导入python包
从本地目录导入python包到解释器(python导入目录下的文件)
我正在开发/测试本地目录中的软件包。我想将其导入解释器(v2.5),但是sys.path不包括当前目录。现在我输入sys.path.insert(0,''.'')
。有没有更好的办法?
也,
from . import mypackage
失败并显示此错误:
ValueError: Attempted relative import in non-package
答案1
小编典典您只能在从作为包的一部分导入的模块中使用相对导入-您的脚本或交互式解释器不是,因此,当然from .import
(这意味着“从与我导入的包相同的包中导入”)不会不行 importmypackage
将被罚款,一旦你确保父目录的mypackage
是sys.path
(你如何设法让你的当前目录 远
从sys.path
我不知道-你有在site.py一些奇怪的事情,或…)
sys.path
实际上,将当前目录放回该目录中没有比将其放入目录中更好的方法了。
<编译原理 - 函数绘图语言解释器(3)解释器 - python>
<编译原理 - 函数绘图语言解释器(3)解释器 - python>
-
<编译原理 - 函数绘图语言解释器(1)词法分析器 - python>
-
<编译原理 - 函数绘图语言解释器(2)语法分析器 - python>
背景
-
编译原理上机实现一个对函数绘图语言的解释器 - 用除 C 外的不同种语言实现
-
设计思路:
-
将语法分析器并入绘图功能
-
继承语法分析器覆盖重写
-
-
用 Pycharm 写了一个.py 文件:
-
semanticfunc.py
-
输入流是语法分析器得到的语法树,输出流是绘制的图像
-
测试文本序列:
-
//----------------测试程序1:分别测试------------------------
ORIGIN IS (100,300); // Sets the offset of the origin
ROT IS 0; // Set rotation Angle.
SCALE IS (1,1); // Set the abscissa and ordinate scale.
FOR T FROM 0 TO 200 STEP 1 DRAW (T,0); // The trajectory of the x-coordinate.
FOR T FROM 0 TO 150 STEP 1 DRAW (0,-T); // The trajectory of the y-coordinate.
FOR T FROM 0 TO 120 STEP 1 DRAW (T,-T); // The trajectory of the function f[t]=t.
FOR T FROM 0 TO 2*PI STEP PI/50 DRAW(COS(T),SIN(T));
//---------测试程序2----------
ORIGIN IS (20, 200);
ROT IS 0;
SCALE IS (40, 40);
FOR T FROM 0 TO 2*PI STEP PI/50 DRAW (T, -SIN(T));
ORIGIN IS (20, 240);
FOR T FROM 0 TO 2*PI STEP PI/50 DRAW (T, -SIN(T));
ORIGIN IS (20, 280);
FOR T FROM 0 TO 2*PI STEP PI/50 DRAW (T, -SIN(T));
//-----------------测试程序3--------------
ORIGIN IS (380, 240);
SCALE IS (80, 80/3);
ROT IS PI/2+0*PI/3 ;
FOR T FROM -PI TO PI STEP PI/50 DRAW (COS(T), SIN(T));
ROT IS PI/2+2*PI/3;
FOR T FROM -PI TO PI STEP PI/50 DRAW (COS(T), SIN(T));
ROT IS PI/2-2*PI/3;
FOR T FROM -PI TO PI STEP PI/50 DRAW (COS(T), SIN(T));
//-------------------测试程序4-------------
ORIGIN IS(580, 240);
SCALE IS (80, 80);
ROT IS 0;
FOR T FROM 0 TO 2*PI STEP PI/50 DRAW(COS(T),SIN(T));
FOR T FROM 0 TO PI*20 STEP PI/50 DRAW((1-1/(10/7))*COS(T)+1/(10/7)*COS(-T*((10/7)-1)),(1-1/(10/7))*SIN(T)+1/(10/7)*SIN(-T*((10/7)-1)));
//-------------------测试程序5------------
//------------ 函数复杂度图形:-----------
ROT IS 0; -- 不旋转
ORIGIN IS (50, 400); -- 设置新原点(距系统默认原点的偏移量)
SCALE IS (2,1); -- 设置比例
FOR T FROM 0 TO 300 STEP 1 DRAW (T,0); -- 横坐标
FOR T FROM 0 TO 300 STEP 1 DRAW (0,-T); -- 纵坐标
SCALE IS (2,1); -- 设置比例
FOR T FROM 0 TO 300 STEP 1 DRAW (T,-T); -- 函数F(T)=T的轨迹
SCALE IS (2,0.1); -- 设置比例
FOR T FROM 0 TO 55 STEP 1 DRAW (T,-T*T); -- 函数F(T)=T*T的轨迹
SCALE IS (10,5); -- 设置比例
FOR T FROM 0 TO 60 STEP 1 DRAW (T,-SQRT(T)); -- 函数F(T)=SQRT(T)的轨迹
SCALE IS (20,0.1); -- 设置比例
FOR T FROM 0 TO 8 STEP 0.1 DRAW (T,-EXP(T)); -- 函数F(T)=EXP(T)的轨迹
SCALE IS (2,20); -- 设置比例
FOR T FROM 0 TO 300 STEP 1 DRAW (T,-LN(T)); -- 函数F(T)=LN(T)的轨迹
Step 1 :semanticfunc.py - 继承语法分析器并入绘制功能
#!/usr/bin/env python
# encoding: utf-8
''''''
@author: 黄龙士
@license: (C) Copyright 2019-2021,China.
@contact: iym070010@163.com
@software: xxxxxxx
@file: semanticfunc.py.py
@time: 2019/11/30 10:47
@desc:
''''''
import parserfunc as pf
import scannerclass as sc
import numpy as np
import turtle
import sys
import matplotlib
import matplotlib.pyplot as plt
class semantic(pf.Parsef):
def initPaint(self): # 初始化画布
self.fig = plt.figure()
self.ax = self.fig.add_subplot(111)
def Errmsg(self): #出错处理
sys.exit(1)
def CalcCoord(self,x,y): # 计算点坐标 即比例旋转平移变换 x,y都是二元组
x = x * self.Scale_x
y = y * self.Scale_y ## 进行比例变换
tmp_x = x * np.cos(self.Rot_angle) + y * np.sin(self.Rot_angle)
y = y * np.cos(self.Rot_angle) - x * np.sin(self.Rot_angle)
x= tmp_x ## 旋转变换
x = x + self.Origin_x
y = y + self.Origin_y ## 进行平移变换
return x,y
def DrawLoop(self):
x,y = self.CalcCoord(self.x_ptr,self.y_ptr)
self.ax.scatter(x,y)
def Statement(self): ## 重写statement ,让每次ForStatement执行完毕后画图
self.enter("Statement")
if self.token.type == sc.Token_Type.ORIGIN:
self.OriginStatement()
elif self.token.type == sc.Token_Type.SCALE:
self.ScaleStatement()
elif self.token.type == sc.Token_Type.ROT:
self.RotStatement()
elif self.token.type == sc.Token_Type.FOR:
self.ForStatement()
self.DrawLoop()
# elif self.token.type == sc.Token_Type.CONST_ID or self.token.type == sc.Token_Type.L_BRACKET or \
# self.Expression()
else: self.SyntaxError(2)
self.back("Statement")
# 绘图语言解释器入口(与主程序的外部接口)
def Parser(self): # 语法分析器的入口
self.enter("Parser")
if (self.scanner.fp == None): # 初始化词法分析器
print("Open Source File Error !\n")
else:
self.FetchToken() # 获取第一个记号
self.Program() # 递归下降分析
plt.show()
self.scanner.CloseScanner() # 关闭词法分析器
self.back("Parser")
Step 2 :semanticmain.py - 解释器主函数入口
#!/usr/bin/env python
# encoding: utf-8
''''''
@author: 黄龙士
@license: (C) Copyright 2019-2021,China.
@contact: iym070010@163.com
@software: xxxxxxx
@file: parsermain.py
@time: 2019/11/26 22:31
@desc:
''''''
import scannerfunc as sf
# import parserfunc as pf
import semanticfunc as paint
import os
file_name = ''test.txt''
scanner = sf.scanner(file_name)
semantic = paint.semantic(scanner)
semantic.initPaint()
semantic.Parser()
# parser = pf.Parsef(scanner)
# parser.Parser()
# os.system("pause")
实现结果
- 对于测试程序(1):
- 对于测试程序(2):
- 对于测试程序(3):
- 对于测试程序(4):
- 对于测试程序(5):
Mac下Pycharm导入Python包
Pycharm中导入Python包的方法
突然发现自己已经一个月没有更新博客了,可能是最近太忙了,但是要更新的内容我已经收集好了,接下来我会慢慢更新出来
在Pycharm中导入Python包,首先推荐的方法是点击File->Settings,
点击后点击右边的+号
在输入框中输入想要的包名即可,选中后点击左下角的Install Package即可
但是有时因为包的版本太高,代码运行出错,此时需要选中右下角的Specify version,然后选择想要的版本即可,
但是如果下载错误的话,就推荐到命令行下载
输入
pip install +包名 //注意有空格
但是我的权限不够的原因,所以我下载包的时候需要输入
pip install --user +包名 //注意有空格
出现successfully即表示下载成功,然后再去setting里重新下一遍就可以在项目中直接应用了
在项目中下载包的路径一般为C:\Users\hp\PycharmProjects\untitled\venv\Lib\site-packages,这是我自己的路径,读者可以对应寻找
pycharm导入python包
总步骤:file --> settings --> poject interpreter --> 点击加号 --> 搜索需要导入的python包 --> 选中需要导入的python包 --> install Package --> 安装成功
1.file --> settings
2.poject interpreter -->点击加号
3.搜索需要导入的python包 --> 选中需要导入的python包 --> install Package
4.安装成功
今天关于从本地目录导入python包到解释器和python导入目录下的文件的分享就到这里,希望大家有所收获,若想了解更多关于<编译原理 - 函数绘图语言解释器(3)解释器 - python>、Mac下Pycharm导入Python包、Pycharm中导入Python包的方法、pycharm导入python包等相关知识,可以在本站进行查询。
本文标签: