<Zhuuu_ZZ>Python环境配置

本文详细介绍了在Windows和Linux环境下配置Python开发环境的步骤,包括安装Anaconda、PyCharm、Scrapy爬虫框架和PySpark。在Windows上,重点讲解了Anaconda的安装、PyCharm的配置以及Scrapy的安装。而在Linux系统中,主要阐述了Anaconda的安装和PySpark的搭建,包括设置环境变量和启动PySpark。整个过程旨在为开发者提供一套完整的Python开发环境搭建方案。
部署运行你感兴趣的模型镜像

一 、在Windows上安装Anaconda3[Windos]

  • 在官网上下载 Anaconda 的安装文件

    • Anaconda3-5.1.0-Windows-x86_64.exe
  • 如果操作系统是 Win10 系统,请右键点击安装文件,选择以“管理员身份运行”(之前出现过在 Win10 上,未使用管理员权限安装导致后面 Scrapy 爬虫安装失败的情况)

  • 以管理员身份运行
    以管理员身份运行

  • 下一步
    在这里插入图片描述

  • 下一步
    在这里插入图片描述

  • 选择第二个,所有用户都可使用
    在这里插入图片描述

  • 可自定义Anaconda安装位置
    在这里插入图片描述

  • 将两个都勾上,自动添加环境变量
    在这里插入图片描述

  • 点击 Skip,不安装 VSCode。我们使用 PyCharm 作为发工具
    在这里插入图片描述

  • 安装完毕,测试,在CMD命令行输入python即可,输出Version即表示安装完成。
    在这里插入图片描述

二、PyCharm 安装及工程配置[Windows]

  • professional 表示专业版,community 是社区版,推荐安装社区版,因为是免费使用的。

1、当下载好以后,点击安装,记得修改安装路径,我这里放的是E盘,修改好以后,Next
在这里插入图片描述
2、接下来是
在这里插入图片描述
我们可以根据自己的电脑选择32位还是64位,目前应该基本都是64位系统吧

3、如下
在这里插入图片描述
点击Install,然后就是静静的等待安装了。

4、安装完成后添加Python解释器
在这里插入图片描述

三、Scrapy 爬虫框架安装配置[Windows]

直接在CMD命令行安装命令:conda install scrapy 然后选择y下载配置。

如果安装失败,可能的原因是 Scrapy 爬虫框架所依赖的 twisted 安装失败。 
twisted 是用 Python 实现的基于事件驱动的网络引擎框架(从这里可以看出, 一个框架可以依赖于另一个框架),
但其安装形式比较特殊,须先下载源码,再在本地编译生成可执行文件后才能安装,
而如果本地无 VS 编译工具或 VS 的版 本低于编译要求就会导致 twisted 安装失败,进而即会使得 Scrapy 安装失败。 
此时可以采用下载离线安装包的方式下载并安装 twisted(05-其他资料中提供 了),但要注意选择与操作系统版本相对应的安装文件。 

安装 twisted 的方法: 命令行切到安装文件的位置,之后运行命令: pip install Twisted-18.9.0-cp36-cp36m-win_amd64.whl twisted 
安装完成后再重新使用“pip install scrapy”命令安装 Scrapy 爬虫框架 就可以了。

最后配置Anaconda3安装目录下Scripts文件夹的PATH环境变量,不过一般安装Anaconda3时可以一键配置。

四、PySpark 集成环境搭建[Linux]

1、Anaconda 安装

1.使用 yum 安装 bzip2,缺少 bzip2 安装 Anaconda 会失败

yum install -y bzip2

2.安装 Anaconda3-5.1.0-Linux-x86_64

bash Anaconda3-5.1.0-Linux-x86_64.sh

进入之后主要是按照提示操作即可,比如回车,输入 yes,或输入 no 等。
此处回车,进入安装。
在这里插入图片描述
之后需要接受协议,输入 yes,然后在需要回车的地方进行回车安装。
在这里插入图片描述
注意,此处可以指定路径,也可以直接回车,直接回车就是安装在默认的/root/anaconda3 路径下。我们这里安装在/opt/install 下(该路径/opt/install 应提前创建,若该路径不存在,会安装在默认路径。)
安装完成后会提示是否自动添加环境变量,yes 即可。
在这里插入图片描述
是否安装 VSCode,这里是 linux,不需要。输入 no,安装结束。
在这里插入图片描述
安装 Anaconda 后会覆盖系统原有的 Python,可以通过修改.bashrc 使两个版本的 Python 共存。

vim /root/.bashrc

--------------------
export PATH="/opt/install/anaconda3/bin:$PATH"
alias pyana="/opt/install/anaconda3/bin/python"
alias python="/bin/python"

-------------------------------
#使环境变量生效
source /root/.bashrc

在这里插入图片描述

2、搭建 PySpark

1.生成 PySpark 配置文件
在当前用户文件夹下运行以下命令生成配置文件。

cd ~
jupyter notebook --generate-config

2.修改配置文件,允许从外部访问 Jupyter

vi ./.jupyter/jupyter_notebook_config.py

进入文件后对如下字段进行修改

c.NotebookApp.allow_root = True
c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.password = 'sha1:*****************'
c.NotebookApp.port = 7070

#定义notebook的工作目录
c.NotebookApp.notebook_dir = '/opt/install/notebook'

其中的 c.NotebookApp.password 属性的值需要在Anaconda 的 Python 中生成
使用 pyana(前面给 Anaconda 的 Python 起的别名),进入交互模式。运行以下代码。

from notebook.auth import passwd
passwd()

在这里插入图片描述
按照提示设置密码后会生成与之对应的加密密码,然后将这个生成的字符串赋值给 c.NotebookApp.password 属性。

3.修改环境变量
修改.bashrc 文件 vi /root/.bashrc

export PYSPARK_PYTHON=/opt/install/anaconda3/bin/python3
export PYSPARK_DRIVER_PYTHON=/opt/install/anaconda3/bin/jupyter
export PYSPARK_DRIVER_PYTHON_OPTS="notebook"

ipython_opts="notebook -pylab inline"

4.使环境变量生效并关闭防火墙

source /root/.bashrc
systemctl stop firewalld.service
systemctl disable firewalld

5.启动 PySpark

pyspark

6.启动效果
在这里插入图片描述
在这里插入图片描述

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

<?xml version="1.0"?> <robot name="car" xmlns:xacro="http://ros.org/wiki/xacro"> <!-- 1. Base Links --> <link name="base_footprint"> <visual> <geometry> <sphere radius="0.001"/> </geometry> </visual> </link> <link name="base_link"> <inertial> <mass value="2.0"/> <inertia ixx="0.01" ixy="0.0" ixz="0.0" iyy="0.01" iyz="0.0" izz="0.01"/> </inertial> <visual> <geometry> <cylinder radius="0.1" length="0.08"/> </geometry> <origin xyz="0 0 0" rpy="0 0 0"/> <material name="base"> <color rgba="1 0 0 1"/> </material> </visual> <collision> <geometry> <cylinder radius="0.1" length="0.08"/> </geometry> </collision> </link> <joint name="ltf" type="fixed"> <parent link="base_footprint"/> <child link="base_link"/> <origin xyz="0 0 0.055" rpy="0 0 0"/> </joint> <!-- 2. Wheels --> <link name="left"> <inertial> <mass value="0.1"/> <inertia ixx="0.001" ixy="0.0" ixz="0.0" iyy="0.001" iyz="0.0" izz="0.001"/> </inertial> <visual> <geometry> <cylinder radius="0.0325" length="0.015"/> </geometry> <origin xyz="0 0 0" rpy="1.5708 0 0"/> <material name="left"> <color rgba="0 0 0 1"/> </material> </visual> <collision> <geometry> <cylinder radius="0.0325" length="0.015"/> </geometry> </collision> </link> <link name="right"> <inertial> <mass value="0.1"/> <inertia ixx="0.001" ixy="0.0" ixz="0.0" iyy="0.001" iyz="0.0" izz="0.001"/> </inertial> <visual> <geometry> <cylinder radius="0.0325" length="0.015"/> </geometry> <origin xyz="0 0 0" rpy="1.5708 0 0"/> <material name="right"> <color rgba="0 0 0 1"/> </material> </visual> <collision> <geometry> <cylinder radius="0.0325" length="0.015"/> </geometry> </collision> </link> <joint name="base_l_wheel_joint" type="continuous"> <parent link="base_link"/> <child link="left"/> <origin xyz="0 0.1 -0.0225" rpy="0 0 0"/> <axis xyz="0 1 0"/> <dynamics damping="0.1" friction="1.0"/> </joint> <joint name="base_r_wheel_joint" type="continuous"> <parent link="base_link"/> <child link="right"/> <origin xyz="0 -0.1 -0.0225" rpy="0 0 0"/> <axis xyz="0 1 0"/> <dynamics damping="0.1" friction="1.0"/> </joint> <!-- 3. Caster Wheels --> <link name="qwx"> <inertial> <mass value="0.05"/> <inertia ixx="0.0001" ixy="0.0" ixz="0.0" iyy="0.0001" iyz="0.0" izz="0.0001"/> </inertial> <visual> <geometry> <sphere radius="0.0075"/> </geometry> <material name="caster"> <color rgba="0 0 0 1"/> </material> </visual> <collision> <geometry> <sphere radius="0.0075"/> </geometry> </collision> </link> <link name="hwx"> <inertial> <mass value="0.05"/> <inertia ixx="0.0001" ixy="0.0" ixz="0.0" iyy="0.0001" iyz="0.0" izz="0.0001"/> </inertial> <visual> <geometry> <sphere radius="0.0075"/> </geometry> <material name="caster"> <color rgba="0 0 0 1"/> </material> </visual> <collision> <geometry> <sphere radius="0.0075"/> </geometry> </collision> </link> <joint name="qtb" type="continuous"> <parent link="base_link"/> <child link="qwx"/> <origin xyz="0.08 0 -0.0425" rpy="0 0 0"/> <axis xyz="0 1 0"/> </joint> <joint name="htb" type="continuous"> <parent link="base_link"/> <child link="hwx"/> <origin xyz="-0.08 0 -0.0425" rpy="0 0 0"/> <axis xyz="0 1 0"/> </joint> <!-- 4. Laser Sensor --> <link name="laserzj"> <visual> <geometry> <cylinder radius="0.01" length="0.05"/> </geometry> <material name="laserzj"> <color rgba="0 1 0 1"/> </material> </visual> </link> <link name="laser"> <visual> <geometry> <cylinder radius="0.02" length="0.02"/> </geometry> <material name="laser"> <color rgba="1 0 0 1"/> </material> </visual> </link> <joint name="zjtb" type="fixed"> <parent link="base_link"/> <child link="laserzj"/> <origin xyz="0 0 0.06" rpy="0 0 0"/> </joint> <joint name="lasertb" type="fixed"> <parent link="laserzj"/> <child link="laser"/> <origin xyz="0 0 0.03" rpy="0 0 0"/> </joint> <!-- Gazebo Plugins --> <gazebo> <plugin name="gazebo_ros_control" filename="libgazebo_ros_control.so"> <robotNamespace>/</robotNamespace> </plugin> </gazebo> <gazebo reference="laser"> <sensor type="ray" name="laser"> <pose>0 0 0 0 0 0</pose> <visualize>true</visualize> <update_rate>40</update_rate> <ray> <scan> <horizontal> <samples>360</samples> <resolution>1</resolution> <min_angle>-1.5708</min_angle> <max_angle>1.5708</max_angle> </horizontal> </scan> <range> <min>0.1</min> <max>3.0</max> <resolution>0.01</resolution> </range> <noise> <type>gaussian</type> <mean>0.0</mean> <stddev>0.01</stddev> </noise> </ray> <plugin name="gazebo_ros_ray_sensor" filename="libgazebo_ros_ray_sensor.so"> <topicName>/scan</topicName> <frameId>laser</frameId> </plugin> </sensor> </gazebo> </robot>
09-18
你提供的是一份 **Xacro 格式的 URDF 模型文件**(虽然扩展名未标明 `.xacro`,但包含 `xmlns:xacro` 声明),用于在 Gazebo 中仿真一个差速驱动小车。 --- ## ✅ 问题分析 当前模型存在以下几个关键问题,会导致: - Gazebo 启动失败 - 模型无法正确加载 - 物理仿真异常或机器人“爆炸”(飞出场景) - 激光雷达不发布数据 --- ## ❌ 存在的问题及修复方案 ### 🔴 1. 缺少 `<inertial>` 惯性参数 —— 导致物理仿真不稳定 > **问题部件**:`laserzj`, `laser` 这两个 link 完全没有 `<inertial>` 标签,Gazebo 会认为其质量为 0 或无穷大,导致刚体动力学计算崩溃。 #### ✅ 修复方法:添加合理的惯性参数 ```xml <link name="laserzj"> <inertial> <mass value="0.05"/> <!-- 细长圆柱体 --> <inertia ixx="1e-6" ixy="0.0" ixz="0.0" iyy="1e-6" iyz="0.0" izz="1e-6"/> </inertial> <visual> <geometry> <cylinder radius="0.01" length="0.05"/> </geometry> <material name="laserzj"> <color rgba="0 1 0 1"/> </material> </visual> <collision> <geometry> <cylinder radius="0.01" length="0.05"/> </geometry> </collision> </link> <link name="laser"> <inertial> <mass value="0.1"/> <!-- 小圆柱体 --> <inertia ixx="3.4e-5" ixy="0.0" ixz="0.0" iyy="3.4e-5" iyz="0.0" izz="2.0e-5"/> </inertial> <visual> <geometry> <cylinder radius="0.02" length="0.02"/> </geometry> <material name="laser"> <color rgba="1 0 0 1"/> </material> </visual> <collision> <geometry> <cylinder radius="0.02" length="0.02"/> </geometry> </collision> </link> ``` > 💡 提示:`<collision>` 是必须的,否则 Gazebo 不会参与碰撞检测。 --- ### 🔴 2. 轮子和万向轮的惯性张量不合理 你给 `left/right/qwx/hwx` 设置了过大的惯性值(如 `iyy=0.001` 对于一个小轮子来说太大)。 #### ✅ 正确计算方式(以左轮为例) 轮子是实心圆柱体: - 半径 $ r = 0.0325 $ - 长度 $ l = 0.015 $ - 质量 $ m = 0.1 $ 惯性公式: $$ I_{xx} = I_{zz} = \frac{m}{12}(3r^2 + h^2),\quad I_{yy} = \frac{1}{2}mr^2 $$ 代入得: - $ I_{yy} = 0.5 × 0.1 × (0.0325)^2 ≈ 5.28×10^{-5} $ #### ✅ 修改后: ```xml <link name="left"> <inertial> <mass value="0.1"/> <inertia ixx="5.28e-5" ixy="0.0" ixz="0.0" iyy="5.28e-5" iyz="0.0" izz="5.28e-5"/> </inertial> ... </link> ``` 右轮同理。 对于万向球(sphere): - $ I = \frac{2}{5}mr^2 = \frac{2}{5}×0.05×(0.0075)^2 ≈ 1.125×10^{-6} $ ```xml <inertia ixx="1.125e-6" iyy="1.125e-6" izz="1.125e-6" ixy="0" ixz="0" iyz="0"/> ``` --- ### 🔴 3. 视觉颜色单一,不利于调试识别 所有部件几乎都是黑/红/绿,难以区分。 #### ✅ 推荐修改为不同颜色: | Link | 推荐颜色 | RGBA | |------------|------------------|------------------------| | base_link | 红色 | `1 0 0 1` | | left | 蓝色 | `0 0 1 1` | | right | 青色 | `0 1 1 1` | | qwx | 黄色 | `1 1 0 1` | | hwx | 橙色 | `1 0.5 0 1` | | laserzj | 绿色 | `0 1 0 1` | | laser | 品红 | `1 0 1 1` | --- ### 🔴 4. Gazebo 插件命名错误 ```xml <plugin name="gazebo_ros_ray_sensor" filename="libgazebo_ros_ray_sensor.so"> ``` 这个插件名称错误!正确的插件是: ✅ 正确写法: ```xml <plugin name="gazebo_ros_laser" filename="libgazebo_ros_laser.so"> ``` 并且不需要 `<sensor>` 外层再包裹一层 `<sensor>`。 #### ✅ 正确激光雷达定义方式: ```xml <gazebo reference="laser"> <material>Gazebo/Red</material> <sensor type="ray" name="hokuyo"> <pose>0 0 0 0 0 0</pose> <update_rate>40</update_rate> <ray> <scan> <horizontal> <samples>360</samples> <resolution>1</resolution> <min_angle>-1.5708</min_angle> <max_angle>1.5708</max_angle> </horizontal> </scan> <range> <min>0.1</min> <max>3.0</max> <resolution>0.01</resolution> </range> <noise> <type>gaussian</type> <mean>0.0</mean> <stddev>0.01</stddev> </noise> </ray> <plugin name="gazebo_ros_laser" filename="libgazebo_ros_laser.so"> <topicName>/scan</topicName> <frameName>laser</frameName> </plugin> </sensor> </gazebo> ``` --- ### 🔴 5. 缺少物理摩擦参数(轮子打滑) 添加轮子与地面之间的摩擦力: ```xml <gazebo reference="left"> <mu1>1.0</mu1> <mu2>1.0</mu2> <kp>1e6</kp> <kd>1.0</kd> </gazebo> <gazebo reference="right"> <mu1>1.0</mu1> <mu2>1.0</mu2> <kp>1e6</kp> <kd>1.0</kd> </gazebo> ``` --- ## ✅ 修复后的完整 Xacro 文件片段(仅关键部分) ```xml <!-- Laser Mount --> <link name="laserzj"> <inertial> <mass value="0.05"/> <inertia ixx="1e-6" ixy="0.0" ixz="0.0" iyy="1e-6" iyz="0.0" izz="1e-6"/> </inertial> <visual> <geometry> <cylinder radius="0.01" length="0.05"/> </geometry> <material name="laserzj"> <color rgba="0 1 0 1"/> </material> </visual> <collision> <geometry> <cylinder radius="0.01" length="0.05"/> </geometry> </collision> </link> <link name="laser"> <inertial> <mass value="0.1"/> <inertia ixx="3.4e-5" ixy="0.0" ixz="0.0" iyy="3.4e-5" iyz="0.0" izz="2.0e-5"/> </inertial> <visual> <geometry> <cylinder radius="0.02" length="0.02"/> </geometry> <material name="laser"> <color rgba="1 0 1 1"/> <!-- Magenta --> </material> </visual> <collision> <geometry> <cylinder radius="0.02" length="0.02"/> </geometry> </collision> </link> <!-- Gazebo Plugins --> <gazebo reference="laser"> <sensor type="ray" name="hokuyo"> <update_rate>40</update_rate> <ray> <scan> <horizontal> <samples>360</samples> <resolution>1</resolution> <min_angle>-1.5708</min_angle> <max_angle>1.5708</max_angle> </horizontal> </scan> <range> <min>0.1</min> <max>3.0</max> </range> </ray> <plugin name="gazebo_ros_laser" filename="libgazebo_ros_laser.so"> <topicName>/scan</topicName> <frameName>laser</frameName> </plugin> </sensor> </gazebo> <!-- Friction for wheels --> <gazebo reference="left"> <mu1>1.0</mu1> <mu2>1.0</mu2> </gazebo> <gazebo reference="right"> <mu1>1.0</mu1> <mu2>1.0</mu2> </gazebo> ``` --- ## ✅ 如何验证是否成功? 1. **检查 URDF 是否合法** ```bash rosrun xacro xacro car.xacro > car.urdf check_urdf car.urdf ``` 2. **启动 Gazebo 并加载模型** ```bash roslaunch your_package display.launch ``` 3. **查看话题是否有 `/scan` 数据** ```bash rostopic echo /scan ``` --- ##
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值