在 Linux 上,特别是 Debian Jessie,我应该使用/usr/bin/python还是应该安装另一个副本/usr/local/bin?
据我所知,前者是系统版本,当操作系统更新时它可能会改变。这意味着我可以独立于操作系统更新后者的版本。由于我已经在使用 python 3,所以我看不出这会带来什么显着的实际差异。
使用local版本还有其他原因吗?
(我知道有大约 42 个关于如何在版本之间进行更改的问题,但我找不到任何关于原因的信息)
使用#有很多好的 理由!在/ usr/bin中/ env的.底线:它使您的代码更具可移植性.好吧,有点儿.看一下这个....
我有两个几乎相同的脚本, bintest.py
#! /usr/bin/python
import time
time.sleep(5*60)
Run Code Online (Sandbox Code Playgroud)
和 envtest.py
#! /usr/bin/env python
import time
time.sleep(5*60)
Run Code Online (Sandbox Code Playgroud)
请注意,他们只是在他们的shebangs不同.
bintest.py 按预期运行
br@carina:~$ ./bintest.py & ps && killall bintest.py [1] 15061 PID TTY TIME CMD 14625 pts/0 00:00:00 bash 15061 pts/0 00:00:00 bintest.py 15062 pts/0 00:00:00 ps br@carina:~$ [1]+ Terminated ./bintest.py
但envtest.py做的事情不是最优的
br@carina:~$ ./envtest.py & ps && killall envtest.py [1] 15066 PID TTY TIME CMD 14625 pts/0 00:00:00 bash 15066 pts/0 00:00:00 python 15067 …
我可以添加#!/ usr/bin/python在python脚本的开头,将此脚本添加到PATH,以便将其作为命令运行.
但有人可以向我解释'#'和'!'的含义 是什么意思在python和其他语言有这种机制?谢谢
我有一个用Python编写的mapreduce工作.该程序在linux env中成功测试,但在Hadoop下运行时失败了.
这是作业命令:
hadoop jar $HADOOP_HOME/contrib/streaming/hadoop-0.20.1+169.127-streaming.jar \
-input /data/omni/20110115/exp6-10122 -output /home/yan/visitorpy.out \
-mapper SessionMap.py -reducer SessionRed.py -file SessionMap.py \
-file SessionRed.py
Run Code Online (Sandbox Code Playgroud)
Session*.py的模式是755,#!/usr/bin/env python是*.py文件中的第一行.Mapper.py是:
#!/usr/bin/env python
import sys
for line in sys.stdin:
val=line.split("\t")
(visidH,visidL,sessionID)=(val[4],val[5],val[108])
print "%s%s\t%s" % (visidH,visidL,sessionID)
Run Code Online (Sandbox Code Playgroud)
日志错误:
java.io.IOException: Broken pipe
at java.io.FileOutputStream.writeBytes(Native Method)
at java.io.FileOutputStream.write(FileOutputStream.java:260)
at java.io.BufferedOutputStream.write(BufferedOutputStream.java:105)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
at java.io.BufferedOutputStream.write(BufferedOutputStream.java:109)
at java.io.DataOutputStream.write(DataOutputStream.java:90)
at org.apache.hadoop.streaming.io.TextInputWriter.writeUTF8(TextInputWriter.java:72)
at org.apache.hadoop.streaming.io.TextInputWriter.writeValue(TextInputWriter.java:51)
at org.apache.hadoop.streaming.PipeMapper.map(PipeMapper.java:110)
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50)
at org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:36)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:358)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:307)
at org.apache.hadoop.mapred.Child.main(Child.java:170)
at org.apache.hadoop.streaming.PipeMapper.map(PipeMapper.java:126)
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50)
at org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:36)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:358) …Run Code Online (Sandbox Code Playgroud) 通过ARMv8手册,我有以下问题来帮助理解大局.
可以遗留32位应用程序.(ARMv7或更早版本)在ARMv8操作系统上运行吗?
如果需要为ARMv8重建遗留应用程序并假设我将应用程序重建为32位(Aarch32),那么这需要32位操作系统底层支持吗?(知道寻址机制如何在这里工作很有趣.)
请尽可能提供参考.
PS:我的目标是支持Aarch64的Linux操作系统(3.7及更高版本)
假设我已经调用了这个单行Python模块say_hello.py.
print 'Hello World'
Run Code Online (Sandbox Code Playgroud)
如何从终端中的任何位置使脚本可执行?也就是说,Hello World在我的系统的任何地方打印出Python解释器.我在OS X Mavericks上运行.
如果注册商标符号未出现在文件或文件夹名称的末尾,则无法使用 strip。为什么不取代工作?
\n\n我有一些以注册商标符号命名的旧文件和文件夹,我想删除它们。
\n\n这些文件没有扩展名。
\n\n对于文件夹,os.rename(p,p.strip(\'\xc2\xae\'))有效。但是,替换os.rename(p,p.replace(\'\xc2\xae\',\'\'))不适用于文件夹或文件。
替换适用于输入的字符串,即: \n print \'Registered\xc2\xae Trademark\xc2\xae\'.replace(\'\xc2\xae\',\'\')。这些路径不遵循相同的逻辑是否有原因?
笔记:
\n\n我想知道如何使用PHP代码运行python脚本.我尝试过不同的选择
$output = exec("python /var/GAAutomationScript.py");
$command = escapeshellcmd('/var/GAAutomationScript.py');
$output = shell_exec($command);
Run Code Online (Sandbox Code Playgroud)
但无法运行python脚本.我的申请是在Laravel.是否可以使用Laravel调度程序作业运行python脚本,例如使用artisan命令?
我写了一个py脚本来从web获取页面,它只是读取写入权限,所以我的问题是我们何时需要执行权限?
我做错了 我安装了Python 3,然后执行了以下命令,以使defaut版本的Python作为Python3
sudo ln -fs /opt/Python-3.4.1/python /usr/bin/python
Run Code Online (Sandbox Code Playgroud)
但是我想回到python2.7,我做到了
sudo ln -fs /usr/bin/python2.7/python /usr/bin/python
Run Code Online (Sandbox Code Playgroud)
现在,当我想运行带有python的bash脚本时,出现以下错误:
/ usr / bin / env:错误的解释器:不是目录
当我运行此命令时:
ls -l /usr/bin/env
Run Code Online (Sandbox Code Playgroud)
我的结果是红色的:
lrwxrwxrwx 1 root root 25 Jun 12 13:37 / usr / bin / env-> /usr/bin/python2.7/python
确实,当我进入该目录时,我的env可执行文件不再存在,而是链接断开。
我没有在互联网上找到解决方案。
你可以帮帮我吗 ?我开始为自己的错误感到难过。
谢谢
python ×6
linux ×3
python-2.7 ×2
arm ×1
arm64 ×1
bash ×1
chmod ×1
command-line ×1
hadoop ×1
kill ×1
laravel ×1
mapreduce ×1
permissions ×1
php ×1
portability ×1
replace ×1
shebang ×1
strip ×1