编辑:建议的副本,不回答我的问题,因为我主要关注Python的差异.建议的副本比这个问题要广泛得多.
我最近开始学习Python.我目前正在阅读"以艰难的方式学习Python".我有一些特殊的编程经验,但是我回到开始时就从头开始学习所有内容.
在本书中,首先是课程中的一个print
,作者在Python 2.7中提供了各种使用说明,例如:
print "This is fun."
Run Code Online (Sandbox Code Playgroud)
我发现自己想知道print
从编程角度来看这里的技术是什么.一些研究发现了这一点,PEP-3105
在这种情况下,使print
功能:
print语句早已出现在Python 3000中要删除的可疑语言功能列表中,例如Guido的"Python Regrets"演示文稿1.因此,这个PEP的目标并不新鲜,尽管它可能在Python开发人员中引起很大争议.
这print
是Python 2.7中的一个语句,以及Python 3中的一个函数.
但我一直无法找到a statement
和a 之间差异的直接定义function
.我发明了这个也是由发明Python的人Guido van Rossum解释了为什么将打印作为函数而不是声明是好的.
根据我的阅读,似乎函数是一些代码,它接受参数并返回一个值.但是print
在python 2.7中没有这样做吗?是不是接受字符串并返回串联字符串?
Python中的语句和函数有什么区别?
最近,我一直在尝试使用我现有的Django应用程序.我遇到了一个错误: -
ImportError: No module named wagtail
unable to load app 0 (mountpoint='') (callable not found or import error)
Run Code Online (Sandbox Code Playgroud)
经过多次故障排除后,我设法通过复制文件夹wagtail来解决这个问题:
/usr/local/lib/python2.7/dist-packages/
Run Code Online (Sandbox Code Playgroud)
进入这里
/opt/django/src/
Run Code Online (Sandbox Code Playgroud)
解决了这个错误之后,我收到了另一个关于另一个模块的信息,另一个...我每次将文件夹复制 /usr/local/lib/python2.7/dist-packages/
到其中/opt/django/src/
并最终解决了我遇到的问题并且uWSGI启动了.
现在当我访问我的应用程序的主页时,我收到此错误
ImportError at /
cannot import name pages
Request Method: GET
Request URL: http://example.com
Django Version: 1.9
Exception Type: ImportError
Exception Value:
cannot import name pages
Exception Location: ./wagtail/wagtailadmin/urls/__init__.py in <module>, line 4
Python Executable: /usr/local/bin/uwsgi
Python Version: 2.7.3
Python Path:
['.',
'',
'/opt/django/src',
'/root/.python',
'/opt/django/env/lib/python2.7',
'/opt/django/env/lib/python2.7/plat-linux2',
'/opt/django/env/lib/python2.7/lib-tk',
'/opt/django/env/lib/python2.7/lib-old',
'/opt/django/env/lib/python2.7/lib-dynload',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2', …
Run Code Online (Sandbox Code Playgroud) 我已经安装了Django并使用以下命令创建了一个新项目:
mkdir trydjango
cd trydjango
virtualenv -p python3 .
source bin/activate
pip install django==2.0.7
Run Code Online (Sandbox Code Playgroud)
运行时pip freeze
,我看到以下内容:
Django==2.0.7
pkg-resources==0.0.0
pytz==2018.9
Run Code Online (Sandbox Code Playgroud)
在我的虚拟主机中,我有以下内容:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName django.mydomain.com
ServerAlias www.django.mydomain.com
DocumentRoot /var/www/django.mydomain.com
ErrorLog ${APACHE_LOG_DIR}/django.mydomain.com.error.log
CustomLog ${APACHE_LOG_DIR}/django.mydomain.com.access.log combined
<Directory root/Dev/trydjango/src/trydjango>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIApplicationGroup %{GLOBAL}
WSGIDaemonProcess trydjango python-home=root/Dev/trydjango/bin python-path=root/Dev/trydjango/
WSGIProcessGroup trydjango
WSGIScriptAlias / /root/Dev/trydjango/src/trydjango/wsgi.py
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试访问我的域时,它超时了。当我访问该域的Apache错误日志时,出现以下错误消息:
[pid 12746] [客户端xx.xx.xx.xxx:60684]从守护进程“ trydjango”读取响应头时超时:/root/Dev/trydjango/src/trydjango/wsgi.py
如何解决此超时问题?
我将wsgi.py更改为www-data:www-data,并且将应用程序设置为可执行文件夹
不知道还有什么可以尝试使用此全新项目来使wsgi正常工作。
我发现了这一点:Django Webfaction'从守护进程读取响应头时超时'
并添加WSGIApplicationGroup %{GLOBAL}
到virtualhost以及apache2.conf中,但这不能解决问题。
系统操作系统:
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.2 LTS
Run Code Online (Sandbox Code Playgroud)
我已经安装了LEMP堆栈:
nginx/1.10.0 (Ubuntu)
MySQL 5.7.18-0ubuntu0.16.04.1
PHP 7.0.15-0ubuntu0.16.04.4
Run Code Online (Sandbox Code Playgroud)
当我尝试上传主题或插件时,系统正在挂起并在浏览器中显示“连接重置”错误消息。
我已经设法从Wordpress存储库中安装了一些插件,但是无法安装要通过浏览器从远程计算机通过zip上传的15MB插件。
我通过编辑将内存限制增加到512mb,/etc/php/7.0/fpm/php.ini
并且php.ini脚本现在报告这已生效:
memory_limit 512M 512M
Run Code Online (Sandbox Code Playgroud)
我还增加了最大内存限制 wp-config.php
通过将其作为文件的第一行插入:
define('WP_MEMORY_LIMIT', '512M');
Run Code Online (Sandbox Code Playgroud)
我还在php配置文件中创建了以下设置/etc/php/7.0/fpm/php.ini
:
max_execution_time = 240
max_input_time = 240
upload_max_filesize = 100M
Run Code Online (Sandbox Code Playgroud)
但是,插件或主题仍未上传。
我曾经尝试过Firefox和Chrome。
在Chrome浏览器中,上传zip时会获得%的完成度。上传达到44%,然后崩溃,并且在浏览器中收到“连接重置”错误。
我将插件目录和wp-content目录的所有权更改为 www-data:www-data
。
我不知道还能尝试什么,有什么想法吗?
我正在将 Python Django 项目从一台服务器移动到另一台服务器。我使用的是 Debian 7,它在目标服务器上标准安装了 python 2.7.3(原始服务器也使用 Debian 7)。
我尝试移动的项目在其父文件夹中具有以下目录:-
-env
-src
Run Code Online (Sandbox Code Playgroud)
它还有一个文件
install.pip
Run Code Online (Sandbox Code Playgroud)
现在我已经配置了 uwsgi,这些应用程序正在新的网络服务器上运行,但我想使用项目源文件夹中的manage.py。当我运行以下命令时:
python manage.py changepassword user
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
File "manage.py", line 8, in <module>
from django.core.management import execute_from_command_line
ImportError: No module named django.core.management
Run Code Online (Sandbox Code Playgroud)
为了尝试解决这个问题,我安装了 virtualenv 和 pip 并构建了一个新的虚拟环境。然后我运行了以下命令:
pip install -r /sourcefolder/install.pip
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我收到一个错误
Failed building wheel for Pillow
Run Code Online (Sandbox Code Playgroud)
我在线研究了这一点,并确定一个可能的解决方案是安装 libjpg,我使用以下命令完成
apt-get install libjpeg8-dev
Run Code Online (Sandbox Code Playgroud)
然后我再次运行pip install -r /sourcefolder/install.pip
,这次它完成了,没有任何错误。
我尝试再次运行该命令:-
python manage.py changepassword user
Run Code Online (Sandbox Code Playgroud)
我仍然收到错误,但现在它已经改变了。
如果我在虚拟环境之外运行该命令,我会收到以下错误:
文件“manage.py”,第8行,来自django.core.management导入execute_from_command_line导入错误:没有名为django.core.management的模块
如果我从虚拟环境内部运行命令(我已使用 install.pip 要求在其中运行了 pip),我会收到此错误
为了便于阅读等,我已将长路径更改为 /sourcepath:-
Traceback (most recent …
Run Code Online (Sandbox Code Playgroud) 当在此 WooCommerce 商店中订购特定产品时,两个元值将添加到订单中。
存储元值的两个字段位于wp_woocommerce_order_itemmeta
元键是:
quantity
assemblycost
Run Code Online (Sandbox Code Playgroud)
我想在下新订单时以编程方式创建一个新的自定义字段,并将该新字段的值设置为等于quanity * assemblycost
已订购产品的元键组装成本。
经过一些研究,我发现这woocommerce_checkout_update_order_meta
是一个在订单保存到数据库并且元数据已更新后执行的钩子。所以这似乎是我应该使用的钩子。
function add_item_meta( $order_id ) {
//global $woocommerce;
update_post_meta( $order_id, '_has_event', 'yes' );
}
Run Code Online (Sandbox Code Playgroud)
我尝试在functions.php中添加以下代码:
add_action('woocommerce_checkout_update_order_meta',function( $order_id, $posted ) {
$assemblycost = wc_get_order_item_meta($order_id, 'assemblycost');
$quantity = wc_get_order_item_meta($order_id, 'quantity');
$calculatedValue = $quantity * $assemblycost;
wc_update_order_item_meta( $order_id, 'calculated_field', $calculatedValue );
} , 10, 2);
Run Code Online (Sandbox Code Playgroud)
这确实创建了新的元字段,但它将该值设置为 0。
如何更改上面的代码,以便计算字段的值是 的乘积quantity * assemblycost
?
我在 Expo 中有一个简单的 React Native 项目,它使用react-native-webview启动一个网站。
这是源代码:
import React from "react";
import { StyleSheet, View, SafeAreaView } from "react-native";
import { AntDesign } from "@expo/vector-icons";
import { WebView } from "react-native-webview";
export default function App() {
const goback = () => {
WebView.goBack();
};
return (
<SafeAreaView>
<WebView source={{ uri: "https://google.co.uk" }} />
<View style={styles.navbar}>
<View style={styles.forward}>
<AntDesign name="right" size={25} color="grey" />
</View>
<View style={styles.back}>
<AntDesign name="left" size={25} color="grey" onPress={goback} />
</View>
</View>
</SafeAreaView>
);
}
const styles …
Run Code Online (Sandbox Code Playgroud) react-native react-native-android react-native-ios expo react-native-webview
python ×4
django ×3
php ×2
wordpress ×2
apache ×1
expo ×1
function ×1
nginx ×1
orders ×1
pip ×1
python-2.7 ×1
python-3.x ×1
react-native ×1
statements ×1
ubuntu ×1
virtualenv ×1
wagtail ×1
woocommerce ×1
wsgi ×1